原创 動態規劃之區間動態規劃

區間類動態規劃是線性動態規劃的擴展,它在分階段地劃分問題時,與階段中元素出現的順序和由前一階段的哪些元素合併而來由很大的關係。令狀態f[i,j]f[i,j]f[i,j]表示將下標位置iii到jjj的所有元素合併能獲得的價值的最大值

原创 動態規劃【4】之混合揹包

混合揹包就是將前面三種的揹包問題混合起來,有的只能取一次,有的能取無限次,有的只能取kkk次。1 例題:luogu1833 櫻花 事實上,我們直接對不同的物品按情況討論即可。 關於混合揹包,0/1揹包可以看成是多重揹包的特例(k=

原创 動態規劃【3】之多重揹包

多重揹包也是 0/1揹包的一個變式。與 0/1 揹包的區別在於每種物品 有kkk個,而非111個。1 在本章中講介紹多重揹包的兩種方式: 第1種,直接轉換成0/1揹包。對應例題:luogu2347 砝碼稱重 第2種,二進制拆分後

原创 2016 ACM/ICPC Dalian Online-1008 Function

題意:給定長度爲n的數組A和Q個詢問。詢問[L,R],求A(L)%A(L+1)%A(L+2)%……%A(R) 。其中  1≤N,Q≤100000 一個性質:大數對小數取餘,結果小於大數的一半。所以每個大數最多對小數取log(ai)次 題

原创 2016 ACM/ICPC Dalian Online-1010 Weak Pair

題意:給定一個有根樹和k,每個節點權值爲ai,求有序點對(u,v)的數量,有序點對需滿足:u是v的祖先,且au*av<=k; 題解一:dfs序+主席樹 求出樹的dfs序,因爲一棵子樹的所有子節點在dfs序中是連續的,設起始序號爲st,結尾

原创 2016 ACM/ICPC Dalian Online-1002 Different GCD Subarray Query

題意:給定長度爲N的數組,Q個詢問,每個詢問求區間[L,R]中gcd的種類數 (1≤N,Q≤100000,1≤ai≤1000000) 題解:首先對於以a[i]爲右邊界的gcd種類數不超過log(a[i]), 因爲每次取gcd時要麼不變(種

原创 bzoj2437 [Noi2011]兔兔與蛋蛋

題解:我們將棋盤分成黑白格子(相鄰格子顏色不同),將空格染成黑色,那麼我們可以知道X爲合法棋子當且僅當X在黑色格子,而O爲合法棋子當且僅當O在白色格子。 相鄰合法棋子(空格也爲合法)連邊,則我們得到無向圖,而它也是二部圖,當空格一定是在最

原创 2016MUTC4-1006 substring

題意:求包含字符x的不同子串個數 題解:考慮不包含字符X的情況,不同的子串可以用後綴數組解決: 考慮含字符X的情況:即對於起點爲sa[i],終點必須在X之後: nxt[i]表示位置i及之後的第一個X出現的位置 #include <i

原创 2016 ACM/ICPC Dalian Online-1006 Football Games

題目:n支隊伍兩兩比賽,贏2分,平1分,輸0分 給出n支隊伍的得分信息,判斷是否合法 題解:Landau's Theorem 當得分信息滿足以下條件時,合法 {\displaystyle 0\leq s_{1}\leq s_{2}\l

原创 2016 ACM/ICPC Dalian Online-1009 Sparse Graph

題意:n個點的無向完全圖中刪除m條邊,問點s到其他點的最短路徑長度 題解一:BFS遍歷,最短路徑長度爲step的同時遍歷(用需要刪去的邊),若未入隊的點被遍歷到的次數小於最短路徑長度爲step的點的個數,則該點入隊;否則留在未擴展點中。

原创 2016 ACM/ICPC Dalian Online-1007 Friends and Enemies

題意與題解轉自:點擊打開鏈接 題目大意: m個人 n種顏色石頭。 人與人之間關係要麼是朋友,要麼是敵人,關係不具有傳遞性。 每個人可以攜帶任何數量任何種顏色的石頭(也可以不帶) 對於任何兩個人,如果是朋友,攜帶的石頭至少有一種相

原创 bzoj2281

參考題解:點擊打開鏈接 並不是很懂,尤其是出現了反例 不過這個dp求方案還是可以好好學下 dp[i][j]表示前(i-1)個二進制位用了j個位置的方案數,狀態轉移就是枚舉當前的二進制位有多少個1 最後一步算Ans的組合是本身白棋和黑棋之間

原创 bzoj1188 [HNOI2007]分裂遊戲

鏈接:點擊打開鏈接 題解:把一顆豆子看成一種局面,sg[i]中的i爲豆子所處的位置 sg[i]=mex{sg[j]^sg[k]|i<j<=k}, 初始條件sg[n-1]=0 當位置i的豆子個數爲偶數時,sg[i]相互抵消;所以當前局面的S

原创 codeforces Round#369 div2-E ZS and The Birthday Paradox

題意: 一年中有2^n天,問有k個人至少有兩個人生日在同一天的概率,用分數表示。其中n,k<=10^18  題解:1e6+3爲素數。直接求不好求,我們可以總數-不成立的數。不成立的即爲k個人中沒有一個人的生日在同一天,即。而當k-1>=m

原创 bzoj3576 [Hnoi2014]江南樂

題解:把一堆石子看成一種局面,如果遞推求的話會是O(n^2),超時。 有一種性質:n是石子數,i是分成的堆數,如果n/i==n/(i+2),那麼他們的異或和相同。 所有對於n/i相同的堆數,他們的異或和只有兩種情況(i爲奇數和i爲偶數兩種