原创 bzoj1306 [CQOI2009]match循環賽

n支隊伍進行循環賽,勝者得3分,平各得1分,負得0分.現給出各隊伍最終分數,求可能符合的勝負情況數.(n<=8) 這個沒法狀壓,只能爆搜了吧。。 主要剪枝有這幾個: 某個隊伍剩下全贏都達不到分數或已經超過分數剪枝. 當枚舉到某個隊伍的最後

原创 BZOJ1303 [CQOI2009]中位數圖 差分+前綴和

給出1~n的一個排列,統計該排列有多少個長度爲奇數的連續子序列的中位數是b。 差分。找到b在數列中的位置設爲pos,比b大的賦值爲-1,比b小的賦值爲1. 再對pos左邊做後綴和,右邊做前綴和. 因爲數組下標不能爲負,所以累加時+n. 乘

原创 BZOJ2005 [Noi2010]能量採集 遞推+容斥/歐拉函數

對題目手動簡單分析後,可知要求 這裏考慮容斥. 設f(x)表示最大公約數是x的數對個數,g(x)表示存在公約數x的數對個數. 易得g(x)=(n/x)*(m/x). 那麼f(x)=g(x)-Σ(2*x<=i*x<=min(m,n))f(

原创 BZOJ1412 [ZJOI2009]狼和羊的故事 最小割

有一個n*m的網格,其中標1的是狼,標2的是羊,標0的是空地。現在要在格子與格子之間修一些柵欄,使任意的狼與羊互不聯通。n,m<=100. 割的定義是:使S集和T集不存在通路。而題目又要求建的柵欄最少,於是就是最小割問題了。 從源點向所有

原创 BZOJ4568 [Scoi2016]幸運數字 樹上倍增+線性基

有一棵NN 個節點的樹,QQ 個詢問,每次詢問樹上從uu 到vv 的路徑中能xorxor 出的最大值。N≤20000,Q≤200000,N≤20000,Q≤200000, 時限66 s. 詢問一個數集的xorxor 最大值顯然線性基模板

原创 BZOJ2588: Count on a tree 樹上主席樹

給定一棵N個節點的樹,每個點有一個權值,對於M個詢問(u,v,k),你需要回答u和v這兩個節點間第K小的點權,強制在線。N,M<=100000 邊DFS邊建出主席樹,這樣每次建出的樹存儲的都是該節點到根的size 前綴和 這樣每次在r

原创 BZOJ1202 [HNOI2005]狡猾的商人 並查集+前綴和

有一個長爲n的數列,給出m個子段和信息,問是否一定存在衝突。數列可以爲負。 這個題用並查集做感覺很玄學 按照題解打了一遍還是不太清晰 https://www.cnblogs.com/FallDream/p/bzoj1202.html

原创 BZOJ1058 [ZJOI2007]報表統計 STL

給定一個數列 需要實現三種操作: ①在某個數後面加入一個數,如果曾經加入過則加在之前加的數之後 ②查詢所有相鄰兩個數的差的最小值 ③查詢全局差的最小值 用一個set和一個map維護相鄰兩數的差值 每次插入就刪除原來的差值,再插入新的差值

原创 BZOJ3932 [CQOI2015]任務查詢系統 主席樹+差分

給出M個任務,Q個查詢,第i 個任務從第si 秒開始,到第ti 秒結束,優先級爲pi .時間範圍是N.要求支持查詢[sj,tj] 時間段內優先級最小的K個任務,查詢強制在線。 M,N,Q<=100000. 注意到時間範圍不大,因此對每

原创 ARC058F 文字列大好きいろはちゃん / Iroha Loves Strings dp+貪心

給出NN 個字符串,要求選出其中一些串按順序拼接成一個長度爲KK 的串,並且要求拼接串的字典序最小。N≤2000,K≤10000,N≤2000,K≤10000, 每個串長度不超過KK ,總長度不超過106106 . 設ok[i][j]

原创 BZOJ1901 Dynamic Rankings 帶修改主席樹(模板)

給出一個數列,要求支持區間查詢第K小和單點修改。 因爲不強制在線,先將修改操作和原數列一起離散化 建樹方式更改爲使用樹狀數組維護前綴和,主席樹只記錄這一個位置的size . 修改時要在logn 個節點上同時修改 查詢時同時累加lo

原创 BZOJ3524 [Poi2014]Couriers 主席樹(模板)

給一個長度爲n的序列a。1≤a[i]≤n。 m組詢問,每次詢問一個區間[l,r],是否存在一個數在[l,r]中出現的次數大於(r-l+1)/2。 顯然出現次數超過一半的數最多隻有1個 建出主席樹,在樹上二分查找即可 /*******

原创 bzoj1090: [SCOI2003]字符串摺疊 區間dp+hash

題目大意:一個重複k次的子串x可以摺疊替換成k(x)的形式,問原串經摺疊後的最短長度.n≤100 . k(x)的長度爲 k的位數+x的長度+2. 區間dp,轉移方程爲f[i][j]=min(j−i+1,f[i][k]+f[k+1][j

原创 BZOJ1001 [BJOI2006]狼抓兔子 最小割模板

直接dinic跑最大流可過更新一下模板#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define LL long long #define

原创 BZOJ2464 中山市選2009小明的遊戲 SPFA

給定一個n * m的棋盤,上面有兩種格子#和@。給定一個起始位置和一個目標位置,每一步能向上,下,左,右四個方向移動一格。如果移動到同一類型的格子,則費用是0,否則費用是1。計算從起始位置移動到目標位置的最小花費。 最短路無誤 忘判邊界W