原创 洛谷P1290 歐幾里德遊戲(博弈論)

題目鏈接:洛谷P1290 題目大意:給出兩個正整數n和m,Stan先手,Ollie後手,輪流操作,每次取較大的數減去較小的數的正整數倍(得到的數不能小於0),得到0的人勝利,問最後勝者是誰。 這是一道比較簡單的題,但是感覺分析的

原创 BZOJ 4010 菜餚製作(拓撲排序)

題目鏈接:BZOJ 4010 題解: 拓撲排序是比較明顯的,兩種思路: 正着,每次找字典序最小的 倒着,每次找字典序最大的 如果有限制條件<4,1>,那麼最優解是(4,1,2,3),但正着找字典序最小找到的卻是 (2,3,

原创 BZOJ1123 BLO(tarjan割點)

題目鏈接:BZOJ 1123 題目大意:一張無向圖中,對於每一個點,求刪去這個點後有多少對點不能相互到達。 題解:tarjan求割點。求出刪除一個點後形成的幾個聯通塊,任意不同聯通塊裏的點不能互相到達。 代碼(有參考hzwer

原创 BZOJ 1004 Card(Burnside)+BZOJ 1815 有色圖(Polya)

先來寫一寫什麼是置換羣和Burside、Polya。 關於置換羣、Burnside和Polya 一、一些概念 1、羣:對於一個集合G={a,b,c,…}和G上的二元運算*,滿足①封閉性②結合律③單位元④逆元,則稱:集合G在運算’*’之下

原创 BZOJ5249 [2018多省省隊聯測]IIIDX(神奇的貪心)

題目鏈接:BZOJ 5249 題目大意:n(n<=500000)首曲子,n個難度值d[i] (d[i]<=1000000000)。給定一個實數k (k<=1000000000),完成第⌊ik⌋ 首曲子後才能解鎖第i首曲子,若⌊ik⌋=0

原创 BZOJ 4338 糖果(擴展Lucas定理+CRT)

題目鏈接:BZOJ 4338 題目大意:用數字1~k填一個n*m的表格,每種數字可用任意次,要求每行數字1~m列單調不減,任意兩行不完全相同,求方案數對P取模的值。 題解:擴展Lucas+CRT模板題,板子還不是太熟悉,貼到這裏方便複習,

原创 洛谷 P3577 [POI2014]Tourism(狀壓DP)

題目鏈接:洛谷 P3577 題目大意:n個點,m條邊的無向圖(2<=n<=20000,0<=m<=25000),圖中任意兩點間不存在節點數超過10的簡單路徑。給出在每個點建立旅遊站點的花費,問最小花費,使得每個點要麼建立了旅遊站點,要麼與

原创 SDOJ #2013 隨機數生成器(笛卡爾樹)

題目鏈接:SDOJ #2013 題目大意:給出一個n*m(n,m<=5000)的網格,每個網格有互不相同的權值,定義兩個格子聯通當且僅當從其中的某個格子只向下或向右走能到達另一個格子,求網格中字典序最大的反鏈。 題解:反鏈即不存在一個被選

原创 BZOJ 3197 assassin(樹形DP+費用流)

題目鏈接:BZOJ 3197 題目大意:給出兩棵節點被染成黑白兩色的無根樹,問第一棵樹經過重標號後至少要反轉多少個節點的顏色使之與第二棵樹完全相同。 題解:類似BZOJ3162獨釣寒江雪 的解法,可以將樹的重心作爲根DP,設f[i][j]

原创 BZOJ 1176 Mokia(CDQ分治)

題目鏈接:BZOJ 1176 題目大意:維護一個W*W的矩陣,初始值均爲S。每次操作可以增加某格子的權值或詢問某子矩陣的總權值(修改操作數M<=160000,詢問數Q<=10000,W<=2000000)。 題解:CDQ分治。查詢操作可以

原创 BZOJ1558 等差數列(線段樹)

題目大意:給出長爲n(n<=100000)的序列v[],q(q<=100000)次操作,每次對當前序列的[s,t]加上以a爲首項b爲公差的等差數列,或詢問當前序列[s,t]最少能劃分成多少段等差數列。 題目鏈接:BZOJ 1558 題解:

原创 某場模擬賽 博弈(樹形DP+二分+貪心)

題目大意: 一棵n個節點的樹,初始時s節點有一個棋子,兩個人A、B輪流進行操作,規則如下: ①A先手,A可以選擇不進行操作,或選擇操作,即選擇刪除一條邊或清除一條邊上的標記。 ②B後手,每次B會選擇與棋子所在節點相鄰的一條沒有標記的

原创 BZOJ 3162 獨釣寒江雪(樹形DP)

題目鏈接:BZOJ 3162 題目大意:求一棵無根樹上本質不同的獨立集個數 題解:經典的求樹的獨立集個數可以DP來做,f[x][0/1]分別表示以x爲根的子樹中不選點x和選點x的獨立集個數,初始f[x][0]=f[x][1]=1,轉移的時

原创 洛谷 P3479 [POI2009]GAS-Fire Extinguishers(樹形DP)

題目鏈接:洛谷 P3479 題目大意:在一棵n個節點的樹上放置滅火器,每個滅火器可以覆蓋與其所在節點距離不超過k的節點,每個滅火器最多能覆蓋s個節點,求至少需要多少滅火器可以使得所有節點都被覆蓋。(n<=100000,s<=n,k<=20

原创 HDU 3565 Bi-peak Number(數位DP)

題目鏈接:HDU 3565 題目大意:定義“雙峯數”爲滿足可以分割成兩個 /\ /\ 的形式的數,求區間[L,R]內雙峯數位數和的最大值。 題解:第一次寫數位DP,開篇BLOG記錄一下 ○(>_<)○ 用記憶化搜索實現,dfs(int