原创 tarjan強連通--zhengjun

強連通就是在一個有向圖中任何一個點都可以到達除這個點之外的所有點。 然後,在處理的時候,就可以把這一個子圖直接變成一個點。 比如說這張圖 就可以縮成這張圖 原圖中的 就是一個強連通 也就是說只要有環,就一定有一個強連通(其實

原创 快讀模板--zhengjun

#define print(x) if(!x)putchar('0');else write(x) template<typename item> inline void read(register item &x){ x=0;

原创 zjzj的遊戲題解--zhengjun

題目背景 zjzjzjzjzjzj和xxxxxx玩一個運氣遊戲,首先,在若干個卡片上各寫一個正整數,然後,zjzjzjzjzjzj和xxxxxx各選一張卡片,不會讓對方知道,不可以相同,再把這兩個數拼在一起(((zjzjzjzjz

原创 NOI Online #2 入門組第二題荊軻刺秦王題解--zhengjun

我一開始就打出來了,可是忘記一個很重要的剪枝,就是如果當前的步數已經超過答案的步數就不用搜了,還有就是每一個點的每一種狀態都只能走到一次(其實就是走到一個點,之前使用了相同的魔法已經到過這個點)那麼也不用搜下去了。 代碼 #inc

原创 NOI Online #2 入門組第一題未了題解--zhengjun

這個題目名稱十分詭異。 然後我可以提供兩種做法,複雜度一樣,都是O(nlog⁡n)O(n\log n)O(nlogn)的。 方法一 因爲我們每一次使用魔法,就會讓那個什麼鬼畜的人物多走個aia_iai​天,所以就可以貪心,每一次只

原创 NOI Online #2 入門組第三題建設城市題解--zhengjun

一看,這個就是一個組合數學,如圖所示 這樣,很容易想到分類討論,如果x,yx,yx,y在兩側和x,yx,yx,y在同側。 如果是兩側的話,就可以枚舉這兩個位置的高度然後用組合數算出來就可以了。然後的話如果在同側就不用管什麼東西,

原创 洛谷P1095守望者的逃離題解--zhengjun

題面傳送門 思路 因爲跑和使用魔法不能同時執行,所以可以先處理光光使用魔法,然後再處理跑的情況 代碼 #include<bits/stdc++.h> using namespace std; int m,s,t; int f[30

原创 洛谷P1092蟲食算題解--zhengjun

題面傳送門 思路 我明知正解是枚舉每一位是否進位然後用高斯消元來驗證是否有解。 可是我偏不!!!! 我偏偏dfsdfsdfs。 剪枝剪枝+剪枝。 剪枝一:從低位的數開始搜索。 剪枝二:枚舉每一個字母是什麼數的時候從大到小枚舉。 剪

原创 洛谷P1094紀念品分組題解--zhengjun

題面傳送門 思路 因爲最多隻能兩個物品一起,所以排個序,然後用兩個指針,如果這兩個可以,那就兩個都要了,否則就只能要大的一個 代碼 #include<bits/stdc++.h> using namespace std; int

原创 洛谷P1093獎學金題解--zhengjun

題面傳送門 思路 用結構體拍個序,然後輸出就可以了。 代碼 #include<bits/stdc++.h> using namespace std; int n; struct zj{ int x,y,z,sum,num; b

原创 洛谷P1085不高興的津津題解--zhengjun

題面傳送門 思路 一道模擬題,直接打擂臺即可 代碼 #include<bits/stdc++.h> using namespace std; int n,k,maxx; int x,y; int main(){ for(int

原创 洛谷P1088火星人題解--zhengjun

題面傳送門 思路 STLSTLSTL真好,有兩個函數: next_permutation() prev_permutation() 分別是求出數組的下一個排列,和上一個排列。 可以就返回111,如果無法操作了,返回000 代碼

原创 洛谷P1087FBI樹題解--zhengjun

題面傳送門 思路 直接dfsdfsdfs,注意要輸出後序,即爲先左子樹再右子樹最後根 代碼 #include<bits/stdc++.h> using namespace std; int n; string a; void df

原创 洛谷P1084疫情控制題解--zhengjun

題面傳送門 我去我TM沒有去掉freopen調了一下午⋯\cdots⋯ 思路 因爲如果第iii分鐘可以控制住疫情,那麼第i+1i+1i+1以及之後的都是可以的,所以,就可以二分了。 然後就是checkcheckcheck函數如何寫

原创 洛谷P1089津津的儲蓄計劃題解--zhengjun

題面傳送門 思路 一道模擬題,注意下細節 代碼 #include<bits/stdc++.h> int s,h; int main(){ int x; for(int i=1; i<=12; i++){