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

2021-09-14 07:16:07 字數 2116 閱讀 1751

眾所周知,csl 是乙個負責的集訓隊隊長。為了讓集訓隊的學弟們訓練更加飽和,他根據每個人的能力,提出了 m 個題數要求。假如 csl 認為 yi 比 xi 強,那麼如果 xi 做了 a 題,那 csl 會要求 yi 需要做至少 a+ri×k,其中 ri 是已知的常數。csl 現在一共有 s 道題目可以分給大家,因為 csl 馬上就要考os了,所以他不想再出其他題了,請問正整數 k 最大是多少。

從題目中可以看到乙個不等式關係,不難想到可以用差分約束來解,將a = 0, k = 1代入建邊,可以求出k最小的情況下每個人在滿足所有約束下至少要做的題量,當k增大時,每個人做的題量數會增加為 k 倍 ,所有人做的總題量數sum(d[i])也會增加k倍,已知總題量為s,我們可以直接用除法計算出最大倍數,然後判斷一下即可。

這題題目資料特殊,強調是乙個不會出現任何環的圖,可以用拓撲排序來搞,而spfa被無情的卡掉了。

還是貼出兩份**,乙份spfa,乙份tpsort

拓撲排序:

#include

using

namespace std;

#define pii pair

const

int maxn =

6e5+10;

long

long n,m,s;

vector g[maxn]

;long

long d[maxn]

;int vis[maxn]

,ind[maxn]

;long

long

bfs(

int s)

}long

long res =0;

for(

int i =

1; i <= n; i++

) res+

=d[i]

;return res;

}int

main()

for(

int i =

1; i <= n; i++

)long

long res =

bfs(0)

;if(res==0)

puts

("-1");

else

if(res>s)

puts

("0");

else

printf

("%lld\n"

,s/res)

;}

貼出乙份正確帶判環的差分約束**:(在這題會超時,但可作為板子學習)

#include

using

namespace std;

#define pii pair

const

int maxn =

6e5+10;

long

long n,m,s;

vector g[maxn]

;long

long d[maxn]

;int vis[maxn]

;bool

spfa

(int s)

} vis[s]=0

;return

false;}

intmain()

memset

(d,-1,

sizeof

(d))

;d[0]=

0;for(

int i =

1; i <= n; i++

) g[0]

.push_back

(pii

(i,0))

;bool f =

spfa(0

);long

long res =0;

for(

int i =

1; i <= n; i++

) res+

=d[i]

;//if(f) 有環

if(res==0)

puts

("-1");

else

if(res>s)

puts

("0");

else

printf

("%lld\n"

,s/res)

;}

sed命令的新認知

學習任何語法都要先學習格式,對格式理解才能更好的利用語法 1 查詢過濾檔案內容 2 替換內容 直接替換 3 如果內容輸出到螢幕 臨時替換 螢幕上顯示的內容替換 但是不影響原始檔 4 如果內容不顯示到螢幕 則替換原始檔 5 增刪改查 r 支援擴充套件正則 i 替換檔案中的內容 n 取消預設輸出 學習任...

2019 一些新的認知

自我攻擊反熵增 增長飛輪 網狀進化 公升維過勢壘 what why so what 5why 第一性原理 精微 還原論 自律刻意練習 競爭取捨線 結構化思維 矩陣思維 地圖模型 從一到十,舍九取一 分形創新 單一要素最大化 第二曲線 rose 資源 目標 布局 終局 美學思維 欣賞美 創造美是一種能...

傳智杯 眾數出現的次數

題目 2315 傳智杯 眾數出現的次數 時間限制 5sec 記憶體限制 512mb 提交 318 解決 120 題目描述 傳智專修學員的課堂上,為了活躍氣氛,並鞏固位運算的知識,同學們玩起了乙個遊戲。班級裡有 n n 10 6 名同學,每位同學都獲得了兩張卡,紅卡或者黑卡。每張卡上都有乙個不超過 1...