CSL的訓練計畫 拓撲排序

2021-09-14 06:51:06 字數 1645 閱讀 8609

題目保證了不會有環。

一開始唯一能確定的乙個點便是入度為0的點,確定了乙個點自然而然可以推出其他點。

a 1+

r1∗k

+((a

1+r1

∗k)+

r2∗k

))+(

((a1

+r1∗

k)+r

2∗k)

)+r3

∗k)+

...=

su

ma_1+r_1*k+( (a_1+r_1*k)+r_2*k))+(( (a_1+r_1*k)+r_2*k))+r_3*k)+... = sum

a1​+r1

​∗k+

((a1

​+r1

​∗k)

+r2​

∗k))

+(((

a1​+

r1​∗

k)+r

2​∗k

))+r

3​∗k

)+..

.=su

m將k提出來後可以變成k*totval <= tot,k=tot/val

t ot

val=

∑1nv

ali+

ri

totval=\sum_^ val_i+r_i

totval

=∑1n

​val

i​+r

i​。拓撲排序一遍求出val即可。

#include

using

namespace std;

#define for0(a,b) for(int i = a; i < b; ++i)

#define fore(a,b) for(int i = a; i <= b; ++i)

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int maxn =

2e5+5;

int ind[maxn]

,n,m;

ll s,k, val[maxn]

;vector g[maxn]

;void

add(

int u,

int v,

int w)

int vis[maxn]

;void

solve()

} ll sum =0;

for(

int i =

1; i <= n;

++i) sum +

= val[i]

;//cout << sum << endl;

if(sum > s)

if(sum ==

0) cout <<-1

<< endl;

else cout <<

(s/sum)

<< endl;

}int

main()

solve()

;return0;

}

新智認知杯 CSL的訓練計畫 拓撲排序

眾所周知,csl 是乙個負責的集訓隊隊長。為了讓集訓隊的學弟們訓練更加飽和,他根據每個人的能力,提出了 m 個題數要求。假如 csl 認為 yi 比 xi 強,那麼如果 xi 做了 a 題,那 csl 會要求 yi 需要做至少 a ri k,其中 ri 是已知的常數。csl 現在一共有 s 道題目可...

CSL 的訓練計畫 二分 最短路

眾所周知,csl 是乙個負責的集訓隊隊長。為了讓集訓隊的學弟們訓練更加飽和,他根據每個人的能力,提出了 m 個題數要求。假如 csl 認為 yiyi 比 xixi 強,那麼如果 xixi 做了 a 題,那 csl 會要求 yiyi 需要做至少 a ri ka ri k,其中 riri 是已知的常數。...

藍橋訓練 拓撲排序

有 個士兵 1 26 編號依次為 佇列訓練時,指揮官要把一些士兵從高到矮一次排成一行,但現在指揮官不能直接獲得每個人的身高資訊,只能獲得 p1比p2高 這樣的比較 結果 p1 p2 記為 p1 p2 如 表示 比 高。請編一程式,根據所得到的比較結果求出一種符合條件的排隊方案。注 比較結果中沒有涉及...