原创 Codeforces 1175E Minimal Segment Cover

傳送門 思路:沒想到這道題竟然可以用倍增思想!f[x][j]代表從x到開始使用2^j條線段最遠可以到達的座標。   #include <algorithm> #include <iostream> #include <cstdlib>

原创 Codeforces 1176D Recover it!

傳送門 思路:每次考慮最大的數字即可。最大的數字如果是質數,那麼它肯定輸入後來附加到數組b的,那麼他在質數中的位置下標肯定就是數組a的元素。最大的數字如果不是質數,那麼他肯定在數組a,因爲它不可能是任何數的因子。   #include

原创 Codeforces 1181D Irrigation 離線+權值線段樹求第k大

傳送門 思路: 首先根據舉辦次數從小到大排序,然後對詢問進行離線(按照ki的權值從小到大排序), 對於每個k詢問,我們去看是否滿足cnt[i+1].num*i-sum[i]<=k, (sum[i]代表1到i的舉辦總次數,cnt[i+1].

原创 Codeforces 1185F Two Pizzas 狀態壓縮

傳送門 思路: 首先不難想到,每個人的喜好和每個pizza的成分都可以用一個長度爲9的01串表示,也就是用一個1~511之間的數字來表示. 然後對於具有相同數字表示(相同成分)的pizza,我們只需要記錄價格最小的即可.這樣,我們就把m個

原创 Codeforces 1175D Array Splitting

傳送門 題意:給定一個數組a,將a分成k段,每一段都非空。其中如果一個數字a[i]在第j段中,那麼它的貢獻爲a[i]*j,現在需要最大化每個數字的貢獻之和。 思路:相當於在n-1個空中切k-1刀,設sum[i]爲i到n的後綴和。如果在a[

原创 Codeforces 1172B Nauuo and Circle

傳送門 題意:圓上有n個座標,現在有n個結點形成了一棵樹,現在要把這n個結點指派到n個座標中,問有多少種指派方法,使得這棵樹的邊互不相交。 思路:考慮一個結點v,假設他有x個兒子以及它的父結點是u,那麼它與兒子的連線必須在線段uv的上方或

原创 Codeforces 1172A Nauuo and Cards

傳送門 題意:A和B兩個長度爲n的數組,1-n這n個數字與n個數字0共同組成這兩個數組。A數組在小明手中,B數組在桌子上疊放着。小明每次可以將A中的其中一個數字放到B數組的末尾,並且將B數組的第一個數字拿到手中。問經過最少多少次操作,可以

原创 CF 1190D Tokitsukaze and Strange Rectangle 離散化+線段樹

思路: 將橫縱座標進行離散化,然後縱座標由大到小就行枚舉(由小到大枚舉會讓代碼變得極其麻煩),對於出現的新點,包含新點的集合則對答案有貢獻.我們考慮有哪些區間不包含新點:假設共有x種橫座標,那麼總區間個數爲x*(x+1)/2,設對於某一特

原创 Codeforces 1176E Cover it!

傳送門 題意:給定一張圖,最多給⌊n/2⌋個點上色,使得每個未被塗色的點,都與至少一個塗色的點相鄰。 思路:直接將圖生成一棵樹,第一種塗色方法是將奇數層全塗色,若這種方法塗色節點數大於⌊n/2⌋,那麼將偶數層全塗色肯定可行   #inc

原创 Codeforces 1208E Let Them Slide 單調棧

傳送門 思路: 對於每一行的第i個數字,記錄左邊第一個大於它的數字下標j, 右邊第一個大於等於它的數字下標k. 這個數字可以貢獻的區間範圍受到了j和k的限制. 例如,如果某一個區域j可以移動到這,i也可以移動到這,那麼肯定優先選j. 所以

原创 二進制枚舉子集的方法

//枚舉S的子集 for (int x = S; x; x = (x-1)&S)  

原创 一道谷歌測試題 揹包變體

有n個桶,每個桶裏有a[i]個硬幣,不能同時取相鄰兩個桶裏的硬幣,一個桶裏的硬幣要麼取完,要麼不取,揹包容量爲num,也就是最多取num個硬幣。 輸出最多能取多少個硬幣 範圍:1<=n<=10000, 1<=a[i]<=1000,0<=n

原创 微軟面試題

給定一個字符串串A,A中只包含小寫字母 再給定一個串B,B中包含小寫字母和' . '和' * ', 其中' . '可以替換爲任意字符,' * '必定跟在一個' . '或者一個字母的後面,代表'.'或者字母可以重複0或多次。問B去匹配A,輸

原创 Codeforces 1203F2 Complete the Projects (hard version) 貪心

傳送門 思路: 首先b>=0的項目不難處理,根據a值從小到大排序,能完成則r+=b[i]即可.關鍵是在於處理b<0的項目. 對於b<0的項目採用貪心策略: 先根據a值從大到小排序,每遍歷到一個,就看它是否可以完成,如果可以,r+=b[i]

原创 hdu6703 2019CCPC網絡選拔賽 1002 array

我對主席樹的理解再次昇華了 不難看出對於每次2操作,答案最大是n+1(因爲每次更新是+10000000, 永遠不會佔用n+1,而且k是保證<=n的). 如果某個數字被進行過1操作, 那麼就代表這個數字可以用於2類操作的查詢,把這個數字加到