原创 P3469 [POI2008]BLO-Blockade tarjan割點

題意:有n個點m條無向邊,每個點要拜訪其他所有點,總共有n*(n-1)次拜訪次數。保證圖聯通,問禁止通行某個點後一共會少多少次拜訪次數。輸出n行,每行代表 i點禁止通行會減少的拜訪次數。 解:如果這個點不影響圖的聯通性,則答案爲2*(n-

原创 南京網絡預選賽 The Preliminary Contest for ICPC Asia Nanjing 2019 H. Holy Grail 多源最短路

 鏈接 #include <bits/stdc++.h> #define ll long long using namespace std; const int MAX_N = 305; ll g[MAX_N][MAX_N]; //

原创 HDU 6629 (2019杭電第五場 1006) string matching (擴展kmp)

 題意: 求字符串 s[i…len−1] and s[0…len−1] i>0 最長公共前綴長度求解過程的比較次數 題解:  當時一看就直接AC自動機然後用fail指針就行,結果輸入字符是ASCII那就超內存了。用擴展kmp求出每一個後綴

原创 hdu6638 Snowy Smile (最大權值和矩陣、線段樹維護最大子段和)

  #include <bits/stdc++.h> #define ll long long #define ls rt<<1 #define rs rt<<1|1 using namespace std; const int max

原创 P1268 樹的重量 思維

題意: 告訴圖中任意兩點最短路,求所有路之和。 顯然 #include <bits/stdc++.h> using namespace std; int dis[35][35]; int main() { int n; while(

原创 P1198 [JSOI2008]最大數 線段樹入門

#include <bits/stdc++.h> #define ll long long const int maxn = 200005; using namespace std; ll mod; struct N{ ll val,

原创 南京網絡預選賽 The Preliminary Contest for ICPC Asia Nanjing 2019 B. super_log 歐拉降冪

模擬歐拉降冪 #include <bits/stdc++.h> #include <iostream> #include <cmath> #include <cstdio> #include <cstring> #include <u

原创 HDU 5458 Stability(樹鏈剖分+ 並查集)

  題意:給出一張N個點,M條邊的無向圖,有兩個操作: 1.刪除(u, v)間的一條邊 2.如果刪除(u, v)間的一條邊可使其不連通,找出這樣的邊的個數,就是找(u, v)間橋的個數 詢問時 ,處理到同一條重鏈 , 要( l+1, r

原创 2019 CCPC 秦皇島 MUV LUV EXTRA kmp

傳送門  枚舉循環節已出現的長度 p,最優的循環節就是最後 p 個字 符構成的字符串的最短週期。 考慮把字符串倒過來,使用 kmp 可以求出每個前綴的最短 週期,即求出了原串每個後綴的最短週期。 #include<iostrea

原创 南京網絡預選賽 The Preliminary Contest for ICPC Asia Nanjing 2019 F 主席樹 或 滑動窗口

鏈接 查詢區間 [ id-k,id+k] 小於 val 的個數 num , 再在該區間查詢第 num 大的數。 從小到大做,則每次只要找一次就行。 O(n*log2n)  #include <bits/stdc++.h> using n

原创 P3119 [USACO15JAN]草鑑定Grass Cownoisseur 縮點 topo或最長路

題意:n個點 m條有向邊,可以來回走一個點,問在可以逆行一次的情況下最多有能經過多少個不同的點。 解: 先縮點去環建新圖,新圖建正序(表示以1爲起點到達的點)和逆序(以1爲終點到達的點) ,然後最長路求出從1到每個點經過不同點的最大數目 

原创 牛客練習賽51 D 羊喫草

 建圖沒什麼好說的,跑最大流原來的權值會被破壞,需要記錄重新賦值。 #include <bits/stdc++.h> using namespace std; #define ll long long #define INF 0x7ff

原创 P1641 [SCOI2010]生成字符串 組合數學

 題意: 現有n個1和m個0 個字符組成的字符串,任意前k個字符1的個數不小於0的個數,求解決方案數,結果對20100403取模。   題解:(盜圖 1和0的個數和爲x軸,1和0的個數差爲y軸。則需要從(0,0)走到(n+m,n-m),選

原创 P1525 關押罪犯 並查集

 題意:將一些人分成兩部分,m條x與y之間有w的值,求分配後的最大的值儘量小。注意沒有輸出0 貪心,並查集 #include <bits/stdc++.h> using namespace std; const int maxn = 2

原创 P1113 雜務 拓撲

  #include <bits/stdc++.h> #define ll long long using namespace std; const int maxn = 100000000; int head[maxn]; int