咕咕咕
刪邊操作直接令其=1e9就好了,圖的構造肯定先想想直接構造成樹怎麼做,我們直接令需要滿足\(d_i\)的條件的那些最短路就=一條邊。那麼直接弄出一顆wb相間的森林即可,並且令父邊=\(d_i\)。
但是每棵樹的根節點沒有父邊啊!仔細思考發現,找到乙個連線兩個相等的\(d\)的並令其中乙個為根即可。這樣一條父邊滿足了兩個\(d_i\)的條件的限制。
充分性是顯然的,下證必要性
能夠如上構造方案的充要條件是存在一條兩端d相等的邊。
這其實是兩個條件,點和邊。
先證最小的那條需要滿足條件的路徑的兩端的d相同,不然一定有乙個無法滿足d的條件。設這條路徑長度為len。
再證這條路徑經過的點數=2,這也是顯然的,因為如果》2,中間的乙個點是無法滿足條件的,因為這條路徑兩端是一w一b,一定有乙個使得他的最短路具體實現直接bfs就好了。
//@winlere
#include#include#include#include#includeusing namespace std; typedef long long ll;
inline int qr()
const int maxn=1e5+5;
const int inf=1e9;
struct ee[maxn<<2];
int head[maxn],ans[maxn<<1],usd[maxn],n,m,cnt,d[maxn];
char col[maxn];
void add(int fr, int to); head[fr]=cnt;
e[++cnt]=(e); head[to]=cnt;
}queue< int > q;
int main()
while(q.size())
for(int t=1;t<=n;++t)
if(col[t]==0)
return puts("-1"),0;
puts(col+1);
for(int t=1;t<=m;++t)
printf("%d\n",ans[t]?ans[t]:inf);
return 0;
}
沒有題解的題解
考試要寫題解,可我不會寫,然後就變成了沒有題解的題解了 frist.評價 這是一道只考讀入的題。題面 n m的方陣,輸出被 包圍的 0 的個數。做法 讀入 本題難點 然後做一遍遍歷,將在方陣邊緣的0全部做一遍dfs遍歷將與其連成一塊的 0 全部變成 然後數一遍有幾個 0 就可以了。還在完善中,只能給...
題解 LibreOJ 6229 題解
題目鏈結 給定 n 求 f n sum n sum i frac i,j bmod 10 9 7 1 le n le 10 9 首先,這個求和範圍有些不爽,利用對稱性轉化一下得 f n frac 12 left n sum n sum n frac i,j right 然後推一下式子 begin s...
題解 CF1119H Tripe題解
題目傳送門 給出 n,t,x,y,z 值域 le 2 t 給出 n 個三元組 a i,b i,c i 表示有 x 個 a i y 個 b i z 個 c i 對於每個 k in 0,2 t 1 求出從每組選出乙個數的異或值為 k 的方案數。先定義 delta n f delta 表示多項式 f 的第...