原创 codeforces1146G Zoning Restrictions

題面 題意 在一條路上有標號爲1-n的n座房子,每座房子最高爲h,若一座房子的高度爲x,則這座房子的收益爲x*x,有m條限制,每條限制表示如果在l-r之間的所有房子的最大高度超過hi,則罰款ci.問所有房子的最大收益是多少. 做法 一

原创 Atcoder agc033 E - Go around a Circle

題面 題意 給出一個環,上面有n個點,將他劃分爲n段弧,現在要求對每段弧進行紅藍染色,要求染色完成後,從每個點開始通過在環上移動,經過的弧構成的字符串都可以成爲給定的字符串,問一共有幾種染色方法. 做法 首先要確定一些結論. 假設給出

原创 Atcoder agc033 D - Complexity

題面 題意 給出一個矩陣,若一個矩陣中的所有元素都相同,則這個矩陣的代價爲0,反之可以將它分成兩個子矩陣,代價爲兩個子矩陣的代價的較大值+1. 做法 因爲答案是log級別的,所以可以考慮枚舉答案,記dp[l][r][i]dp[l][r

原创 codeforces954I Yet Another String Matching Problem

題面 題意 定義一種對字符串的操作爲將某種字符全部替換爲另一種字符,定義兩個字符串之間的距離爲讓兩個串相同的最少操作次數. 現給出兩個字符串S,T,求S的每個長度爲∣|∣T∣|∣的子串與T之間的距離. 做法 首先轉化一下兩個字符串a,

原创 [CQOI2012]局部極小值

題面 題意 將1,2,3…,m*n填入一個m∗nm*nm∗n的矩陣,要求一些位置滿足比周圍八個數都小,且其他位置不滿足,則一共有幾種方案. 做法 首先不考慮"其他位置不滿足"這個要求,因爲數據範圍很小,因此最多有8個位置符合條件,可以

原创 codeforces1119H Triple

題面 題意 給出三個數x,y,z,再給出n組數,每組數包含(x+y+z)個數,x個a,y個b,z個c,那麼從每一組數中選擇一個數的異或值爲t的方案數是多少,對每個t輸出答案,a,b,c均小於(1<<m). 做法 首先考慮一個簡單的暴力

原创 codeforces1153F Serval and Bonus Problem

題面 題意 在一條線段上隨機放n個線段,則被至少k條線段覆蓋的區間總長度期望爲多少. 做法 首先可以發現這n個線段的2∗n2*n2∗n個端點期望把線段等分爲2∗n+12*n+12∗n+1段,那麼只要計算每一段的貢獻即可.這個可以用dp

原创 codeforces1119F Niyaz and Small Degrees

題面 題意 給出一棵有n個點的樹,每條邊有一個邊權,對於[0,n−1][0,n-1][0,n−1]的每一個數x求,至少刪掉權值和爲多少的邊後,所有點的度數都小於等於x. 做法 首先考慮對於一個x怎麼做,記dp[i][2]dp[i][2

原创 [ZJOI2019]麻將

題面 題意 共有n種麻將牌,給出一開始的13張麻將牌,問期望摸上來幾張牌後,與開始的13張牌組合後存在一個大小爲14的能和的子集. 做法 因爲要求期望的摸牌次數,我們可以將這個次數轉化爲∑i=134∗np(i),p(i)\sum_{i

原创 codeforces864F Cities Excursions

題面 題意 給出一張有向圖,多次詢問,每次詢問給出三個數u,v,k,表示詢問從u到v的路徑上第k個點是什麼。 若u,v不連通或長度大於k或該路徑無限長輸出-1 做法 首先可以通過n次dfs求出數組ok,ok[i][j]表示從點i出發是

原创 codeforces193D Two Segments

題面 題意 給出一個有n個數的排列,現在請你選擇兩個不重疊的區間,使這兩個區間的數的集合可以組成一個公差爲1的等差數列,問有幾個這樣的集合。 做法 我們可以用f[l,r]表示[l,r]中的所有數在給出排列中最少分成幾段,這樣問題就轉化

原创 codeforces949D Curfew

題面 題意 一條直線上有n個寢室,每個寢室中有aia_iai​個人,現在有兩個宿管分別從左右兩邊向中間走,每個單位的時間查一個寢室,若人數不足b個,則會記錄,最中間的寢室歸左邊的宿管,現在每個人每個單位的時間可以跑d個寢室,則兩個宿管

原创 codeforces1111E Tree

題面 題意 給出一棵樹,多次詢問,每次詢問給出一個根節點和k個點,問要求將它們劃分爲至多m個集合,要求每個集合中不包含存在祖先關係的點,則一共有幾種方法。 做法 考慮單次詢問怎麼做,可以發現一個非常重要的性質,一個點的兩個不同祖先不可

原创 洛谷 P4595 [COCI2011-2012#5] POPLOCAVANJE

題面 題意 給出一個字符串S(長度不超過300000)和至多5000個串,用這至多5000個串去覆蓋S,每個串允許用多次,且允許串重疊,則S中至少有幾個字符不被覆蓋。 空間限制爲64MB 做法 這題可以用後綴自動機和AC自動機都可以直

原创 AtCoder Grand Contest 019F Yes or No

題面 題意 你要做一共(n+m)(n+m)(n+m)道判斷題,其中有m道題的答案是對,n道題的答案是錯,當你做一道題之後,就可以知道對錯,則你期望最多能做對多少題。 做法 首先最優方法肯定是寫當前剩餘數量最多的答案,我們可以將求正確期