原创 【bzoj 1458】士兵佔領

傳送門~ 解題思路 建圖:先在棋盤上擺滿士兵,求最多拿走多少士兵仍能滿足條件,就可以跑最大流了。 源點向每一行連邊,每一列向匯點連邊。矩陣中每一個點如果不是障礙物就從那一行向那一列連一條流量爲1的邊。 代碼: #include

原创 【bzoj 3238】差異

傳送門~ 解題思路 求後綴數組以後搞個單調棧。 因爲height數組的意義讓這個單調棧很煩,注意要理清思路再寫。 代碼: #include<algorithm> #include<iostream> #include<cmat

原创 【bzoj 1468】tree

傳送門~ 解題思路 點分治 代碼: #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<string> #incl

原创 【bzoj 4337】樹的同構

傳送門~ 解題思路 樹同構模板題。 爲了保險用了雙哈希。 選了極其暴力的方法處理兩個重心的情況:對於每個重心分別求哈希值然後取max。 哈希的時候,每次將所有子節點的哈希值排好序拿出來,然後看心情瞎搞,隨便乘一乘模一模,最後

原创 【bzoj 1497】最大獲利

傳送門~ 解題思路 最大權閉合圖。從原點向每個實驗連邊,流量爲收益;每個實驗向所需器材連邊,流量爲inf;每個器材向匯點連邊,流量爲成本。然後跑最小割。 代碼: #include<algorithm> #include<iost

原创 codeforces-939E Maximize!

題意 維護一個集合,兩種操作: 1、向集合加入一個數,保證這個數比集合中所有數都大 2、在集合中找一個子集,使子集中最大值減平均值最大,輸出這個最大值 解題思路 加入第iii個數AiAiAi後,考慮包含AiAiAi的子集對ansa

原创 【bzoj 2017】硬幣遊戲

傳送門~ 非常棒的一道題。f[i][j]f[i][j] 表示剩i枚硬幣時取j個最多拿到多少,sum[i]sum[i] 表示最後i枚硬幣的價值和,狀態轉移爲: f[i][j]=sum[i]−max(f[i−j][1]...f[i−j][

原创 【bzoj 3489】A simple rmq problem

傳送門~ 作爲簡易的K−dK−d treetree 模板 將一個數作爲一個點(x,y,z)(x,y,z) xx 爲該點位置,yy 爲左面第一個和它一樣的數的位置,zz 是右面第一個和他一樣的數的位置 問題轉化成,給定ll 和rr

原创 【bzoj 2005】能量採集

傳送門~ 解題思路 對於一個點(x,y) ,設gcd(x,y)=t ,點(x,y) 對答案的貢獻爲(t−1)×2+1=t×2−1 。 用f[i] 表示最大公因數爲i 的(x,y) 有多少個。易證以i 爲公因數的個數爲(n÷i)×(m÷i

原创 【bzoj 1070】修車

傳送門~ 解題思路 把 mm 個技術人員拆成 nn 個點,分別表示這個技術人員修的倒數第 ii 輛車。 因爲每個技術人員同時開工,所以修一輛車會使這個技術人員之後修的車多等一段時間。 於是從每輛車向技術人員的每個點分別連邊,第

原创 【bzoj 3932】任務查詢系統

傳送門~ 解題思路 每個任務(Si,Ei,Pi),在Si的位置加入Pi,在Ei+1的位置刪掉Pi,這樣取前綴和就能表示每個點包含的所有數。 將每個任務拆成兩個操作:在Si加Pi和在Ei減Pi。將所有操作排序後按操作建主席樹。 然後還需

原创 【bzoj 2257】瓶子和燃料

傳送門~ 解題思路 nn 個數中選 kk 個使這 kk 個數的最大公因數儘可能大。 把每個數分解因數,最大化出現次數大於等於 kk 的因數。 代碼: #include<algorithm> #include<iostream>

原创 【洛谷 P3389】高斯消元法(高斯消元模板)

傳送門~ 解題思路 留着自己看的高斯消元模板。 代碼: #include<algorithm> #include<iostream> #include<cmath> #include<cstdio> #include<cstring>

原创 【bzoj 3132】上帝造題的七分鐘

傳送門 解題思路 二維樹狀數組。 對於修改操作單開一個矩陣,修改時利用差分思想,這樣每個點S[i][j]S[i][j] 的前綴和表示這個點修改了多少。 對於一個查詢(x,y)(x,y) ,單獨考慮從(0,0)(0,0) 到(x,y)(

原创 【bzoj 1009】GT考試

傳送門~ 解題思路 求一個序列,要求其中沒有任意一段與給定串匹配。 暴力做法:f[i][j]f[i][j] 表示枚舉到序列的第ii 個位置,在給定串中匹配到第jj 個位置的方案數。在第i+1i+1 個位置放00 ~99 時會令jj 發生