NOIP2013普及組 車站分級

2022-05-19 10:31:30 字數 735 閱讀 3776

題目:洛谷p1983、vijos p1851、codevs3294。

題目大意:有一些車停靠某些站。現在要給所有站分級,規定一輛車停靠的所有站的最小級數必須大於(起點-終點)所有不停靠的站的最大級數。問至少分成幾種不同的級數?

解題思路:由於停靠的站級數大於不停靠的站,我們把每列車停靠的站向不停靠的連一條有向邊。

然後對其進行拓撲排序,拓撲序列的最大值就是答案。

注意在連邊時先列舉不停靠的站,因為如果它停靠了就可以直接跳過迴圈,避免不必要的操作(反過來就tle了)。

c++ code:

#include#include#includebool b[1011][1011],use[1011];

int n,m,d[1011],a[1011],ceng[1011],q[123457];

inline int readint()

int main()

} }int l=0,r=0,ans=1;

memset(ceng,0,sizeof ceng);

for(int i=1;i<=m;++i)

if(!d[i])ceng[q[++r]=i]=1;

while(l!=r)

} printf("%d\n",ans);

return 0;

}

NOIp2013普及組 車站分級

思路 對於每一趟車,將區間內所有經停的站和所有未經停的站連一條邊,表示前者優先順序一定高於後者,然後用kahn跑一遍拓撲排序即可。然而這樣會創造大量多餘的邊,會tle1個點。考慮一種優化 因為每趟車本身也有乙個優先順序,因此可以將這趟車也看作乙個點,每次先所有將經停的站連一條邊到這兩車上,表示這些站...

NOIP2013 車站分級

一條單向的鐵路線上,依次有編號為 1,2,n 的 n 個火車站。每個火車站都有乙個級 別,最低為 1 級。現有若干趟車次在這條線路上行駛,每一趟都滿足如下要求 如果這趟車 次停靠了火車站 x,則始發站 終點站之間所有級別大於等於火車站 x 的都必須停靠。注 意 起始站和終點站自然也算作事先已知需要停...

noip2013 車站分級

一條單向的鐵路線上,依次有編號為 1,2,n1,2,n的 nn個火車站。每個火車站都有乙個級別,最低為 11 級。現有若干趟車次在這條線路上行駛,每一趟都滿足如下要求 如果這趟車次停靠了火車站 xx,則始發站 終點站之間所有級別大於等於火車站xx 的都必須停靠。注意 起始站和終點站自然也算作事先已知...