BZOJ2657 ZJOI2012 旅遊 題解

2022-05-16 14:08:23 字數 1269 閱讀 4343

到了難得的暑假,為了慶祝小白在數學考試中取得的優異成績,小藍決定帶小白出去旅遊~~

經過一番抉擇,兩人決定將t國作為他們的目的地。t國的國土可以用乙個凸n邊形來表示,n個頂點表示n個入境/出境口。t國包含n-2個城市,每個城市都是頂點均為n邊形頂點的三角形(換而言之,城市組成了關於

t國的乙個三角剖分

)。兩人的旅遊路線可以看做是連線

n個頂點中不相鄰兩點的線段。

為了能夠買到最好的紀念品,小白希望旅遊路線上經過的城市盡量多。作為小藍的好友,你能幫幫小藍嗎?

如果你認真想這道題就不難。

先從暴力開始想,列舉點對,找多少個三角形被它穿過。

關鍵問題是如何求多少個三角形被它穿過。

我們從線段的一段的三角形開始找,找它旁邊的且被穿過的三角形,統計個數即可。

……等等,我們把三角形縮成了點,相鄰的三角形之間連了邊在跑bfs。

好的這道題就做完了,我們把三角形縮成了點,相鄰的三角形之間連邊找直徑就是答案。

(本題卡常,測試本**洛谷不開o2很險能過。)

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=2e5+5

;inline

intread()

struct

nodee[

2*n];

int head[n],cnt,n,t[n][3

],ans,g[n],f[n];

mapint,int>,int>mp;

inline

void add(int u,int

v)int dfs(int u,int

fa)else

if(g[u]d;

}ans=max(ans,f[u]+g[u]+1

);

return

f[u];

}inline

void make_tree(int i,int j,int

u)int

main()

dfs(

1,0);

printf(

"%d\n

",ans);

return0;

}

BZOJ1003 ZJOI 物流運輸

物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修...

ZJOI2007 BZOJ1059 矩陣遊戲

description 第一行包含乙個整數t,表示資料的組數。接下來包含t組資料,每組資料第一行為乙個整數n,表示方陣的大小 接下來n行為乙個n n的01矩陣 0表示白色,1表示黑色 output 輸出檔案應包含t行。對於每一組資料,如果該關卡有解,輸出一行yes 否則輸出一行no。sample i...

bzoj 1096 ZJOI2007 倉庫建設

time limit 10 sec memory limit 162 mb submit 3607 solved 1582 submit status discuss l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把...