題目保證了不會有環。
一開始唯一能確定的乙個點便是入度為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 如 表示 比 高。請編一程式,根據所得到的比較結果求出一種符合條件的排隊方案。注 比較結果中沒有涉及...