亂搞 Evensgn 的債務

2021-08-05 21:42:18 字數 1283 閱讀 6525

時間限制: 1 sec  記憶體限制: 128 mb

evensgn 有一群好朋友,他們經常互相借錢。假如說有三個好朋友 a,b,c。

a 欠 b 20 元,b 欠 c 20 元,總債務規模為 20+20=40 元。evensgn 是個追求簡約

的人,他覺得這樣的債務太繁雜了。他認為,上面的債務可以完全等價為 a 欠 c

20 元,b 既不欠別人,別人也不欠他。這樣總債務規模就壓縮到了 20 元。

現在給定 n 個人和 m 條債務關係。evensgn 想找到一種新的債務方案,使得

每個人欠錢的總數不變,或被欠錢的總數不變(但是物件可以發生變化),並且使

得總債務規模最小。

輸入檔案第一行兩個數字 n; m,含義如題目所述。

接下來 m 行,每行三個數字 ai; bi; ci,表示 ai 欠 bi 的錢數為 ci。

注意,資料中關於某兩個人 a 和 b 的債務資訊可能出現多次,將其累加即可。

如」a 欠 b 20 元」、」a 欠 b 30 元」、」b 欠 a 10 元」,其等價為」a 欠 b 40 元」。

輸出檔案共一行,輸出最小的總債務規模。

樣例輸入 15 31 2 102 3 12 4 1樣例輸入 24 31 2 12 3 13 1 1
樣例輸出 110樣例輸出 20

資料範圍

對於 30% 的資料,1 ≤ n ≤ 10,1 ≤ m ≤ 10。

對於 60% 的資料,1 ≤ n ≤ 100, 1 ≤ m ≤ 104。

對於 80% 的資料,1 ≤ n ≤ 104,1 ≤ m ≤ 104。

對於 100% 的資料,1 ≤ n ≤ 106,1 ≤ m ≤ 106。

對於所有的資料,保證 1 ≤ ai; bi ≤ n; 0 < ci ≤ 100。

這是我見到最水的聯考題。。。只打了27行(包括快讀),交上去ac..

不吹了,思路就是乙個人欠的錢是不變的,但可以轉移,用自己收的錢去換自己欠的錢,如果收的錢大於欠的錢,這個人就不會有貢獻,否則他還會出現債務,對答案有乙個貢獻,陣列搞一下。。

#include#include#include#include#includeusing namespace std;

int read()

while(x>='0'&&x<='9')

return sum*f;

}int n,m,ans=0,hh[1000005];

int main()

for(int i=1;i<=n;i++)if(hh[i]<0)ans-=hh[i];

cout<

亂搞 正確姿勢的亂搞 模擬退火

模擬退火大概原理就是將熱力學裡面金屬退火的原理放在了統計學意義中。其在電腦科學中的應用也是很可觀的 處理一些無法用多項式時間複雜度解決的np問題。對於一些最優化問題,往往我們可以轉化為乙個神奇的函式 引數不限 比如像這樣 如果這個函式滿足單峰性,我們往往可以直接套用三分來處理,但是都說了這如果是乙個...

3770 瘋狂的限制 亂搞

從左到右列舉子串的右區間,同時維護每個位置作為子串的左區間時能滿足的限制條件個數,將滿足條件個數在 l,r 的左區間統計入答案即可。設當前列舉的右區間為i,位置x作為左區間時滿足的限制條件個數為a x 現在將右區間改為i 1,如何維護a 首先a i 1 可以o k 判斷。對於某個限定條件c x l ...

CJB的大作 亂搞

題目大意 一開始給你乙個字串s,n次操作每次把s的後ai個字元放到前面來拼在原串後面,也就是每次長度倍增。操作完後q組詢問l到r區間字元c出現了幾次。s和k不超過100,n和q不超過1e5,l和r不超過1e18。題解 直接搞乙個solve k,n,c 表示操作k次前n個字元c出現的次數,那麼根據n和...