牛客網NOIP賽前集訓營 第6場 T1 最長路

2022-07-23 17:27:16 字數 1289 閱讀 2947

【題解】

先建反向圖,然後跑拓撲排序求出最長路。

將所有的點按照最長路從小到大分層,把上一層連向這一層的邊按照邊權為第一關鍵字、起點的排名為第二關鍵字排序。

按照這個順序更新這一層的答案,按照這一層每個點被更新的順序得到這一層的點的排名。

1 #include2 #include3 #include4

#define ll long long

5#define rg register

6#define n 1000010

7#define mod (998244353)

8using

namespace

std;

9int n,m,tot,cnt,last[n],in

[n],dis[n],q[n],rk[n],ans[n];

10struct edgee[n];

11struct poip[n];

12struct recr[n];

13 inline int

read()

19 inline bool

cmp(rec a,rec b)

23 inline bool cmp2(poi a,poi b)

24 inline void topu(int

x)33}34

}35intmain(); last[v]=tot;40}

41for(rg int i=1;i<=n;i++)if(!in[i]&&!dis[i]) topu(i);

42for(rg int i=1;i<=n;i++)

46 sort(p+1,p+1+n,cmp2);

47int st=1,ed=1;48

while(st<=n);55}

56 ed++;

57}

58 sort(r+1,r+1+tot,cmp);

59for(rg int i=1;i<=tot;i++)if(!ans[r[i].to])

64 st=ed;65}

66for(rg int i=1;i<=n;i++) if(in[i]>0) puts("

infinity

"); else printf("

%d\n

",ans[i]%mod);

67return0;

68 }

牛客網NOIP賽前集訓營 提高組(第一場)

題目鏈結 problem 求所有大於等於 le n len 的區間的中位數最大可以是多少 solution 我們二分乙個答案,對於序列中大於的給 1 1 小於的給 1 role presentation style position relative 1 1。若存在某一段的值大於等於 0 0 則說明...

牛客網NOIP賽前集訓營 提高組(第七場) 小結

終於 牛客的noip賽前集訓營有我會做的題目啦!之前考的 題天天爆零 真的不是省選集訓營?真 純模擬,毫無坑點 以至於我一開始以為題目看錯了,看了好幾遍 include using namespace std int n,m,k,km,a 205 205 x,y,t,egy 0 205 205 si...

牛客網NOIP賽前集訓營 普及組(第一場) C

小a有乙個只包含左右括號的字串s。但他覺得這個字串不夠美觀,因為它不是乙個合法的括號串。乙個合法的括號串是這樣定義的 1.是合法的括號串 2.若a是合法的括號串,則 a 則是合法的括號串 3.若a,b是合法的括號串,則ab也是合法的括號串。小a現在希望刪掉s中若干個字元,使得剩下的字串是乙個合法的括...