NOIP2013提高組 day1 貨車運輸

2021-09-25 08:39:38 字數 1510 閱讀 1508

先求最大生成樹,把一些多餘的邊去掉

求最近公共祖先lca 可用樹上倍增的方法 (tarjan好像也行不知道會不會超時

詢問前處理

w[i][j]=min(w[f[i][j-1]][j-1],w[i][j-1])

最後對於詢問的x,y返回ans

ans=min(ans,w[i][j])(w[i][j]在x,y到lca(x,y)路徑上)

可能有一點點玄學,具體看**就清楚 更玄學 啦~

#include

.h>

using namespace std;

typedef long long ll;

const int n

=10005

,inf=

0x3f3f3f3f

;struct e

edge[

50005];

struct treeedge2[

100050];

int n,m,tot=

0,p,head[n]

,t;int fa[n]

,f[n][

21],w[n][

21],d[n];

int read()

while

(ch>=

'0'&&ch<=

'9')

return sum*f;

}bool comp

(e a,

e b)

int find

(int x)

void

add(int x,int y,int z)

void

kruskal()

}void

dfs(int x)

}int lca

(int x,int y)

if(x==y)

return ans;

for(int i=t;i>=

0;i--)}

ans=

min(ans,

min(w[x][0

],w[y][0

]));

return ans;

}void

init()

}for

(int i=

1;i<=t;i++

)for

(int j=

1;j<=n;j++)}

int main()

sort

(edge+

1,edge+m+

1,comp)

;kruskal()

;init()

; p=

read()

;for

(int i=

1;i<=p;i++

)return0;

}

火車運輸 NOIP 2013 提高組 Day 1

本題 kruskal 倍增lca wa了三次 t t 總結出一些注意事項 1.一定要想明白每一部分是求最大值還是最小值!wa 1 2.注意操作順序,別把要用的變數的數值改沒!wa 2 3.仔細看題,如本題讓 貨車不能到達目的地,輸出 1 而貨車載重為零則應輸出0!wa 3 include inclu...

NOIP2013提高組 花匠

花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h n。設當一部分花被移走後,剩下的花的高度依次為g 1,g ...

NOIP2013提高組解析

題目描述 轉圈遊戲 火柴排隊 貨車運輸 積木大賽 花匠 華容道day1 轉圈遊戲 最終位置實際上就是 x m 10 k n 快速冪即可。include includeusing namespace std int n,m,k,x int power int k int main 火柴排隊 根據感覺可...