Codeforces 刷题记录(已停更)
生活随笔
收集整理的這篇文章主要介紹了
Codeforces 刷题记录(已停更)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Codeforces 每日刷題記錄 (已停更)
打‘+’是一些有啟發意義的題目,部分附上一句話題解,每日更新3題,大部分題目較水。
| 1 | 1 | +CF1073E | 狀壓,數位dp,官方題解std騷操作 | |
| \(~\) | 2 | CF1072A | ||
| \(~\) | 3 | CF1072B | ||
| 2 | 4 | CF1072C | ||
| \(~\) | 5 | CF1068C | 讀題惡心 | |
| \(~\) | 6 | CF1073D | 猜復雜度,模擬 | |
| 3 | 7 | CF1088A | ||
| \(~\) | 8 | CF1088B | ||
| \(~\) | 9 | CF1088C | 構造思想 | |
| 4 | 10 | CF1066A | ||
| \(~\) | 11 | CF1066B | ||
| \(~\) | 12 | CF1066C | ||
| 5 | 13 | +CF1088E | 推結論,tree dp,貪心 | |
| \(~\) | 14 | CF1065A | ||
| \(~\) | 15 | CF1065B | ||
| 6 | 16 | CF1064A | ||
| \(~\) | 17 | CF1064B | ||
| \(~\) | 18 | CF1064C | 結論 | |
| 7 | 19 | gym102028F | 焦作F,模擬 | |
| \(~\) | 20 | CF1090A | ||
| \(~\) | 21 | CF1090B | 模擬 | |
| 8 | 22 | +CF1090D | 構造 | |
| \(~\) | 23 | +CF1090J | kmp的fail樹,計數,推導,樹dfs,HDU5129 | |
| \(~\) | 24 | CF1065C | ||
| 9 | 25 | CF1084A | ||
| \(~\) | 26 | CF1084B | 讀題。 | |
| \(~\) | 27 | CF1084C | ||
| 10 | 28 | CF1059A | ||
| \(~\) | 29 | CF1059B | ||
| \(~\) | 30 | +CF1059C | 貪心構造思想 | |
| 11 | 31 | +CF1083A | tree dp,推結論 | |
| \(~\) | 32 | CF1060A | ||
| \(~\) | 33 | CF1060B | ||
| 12 | 34 | +CF1083E | 斜率優化dp | |
| \(~\) | 35 | CF1060C | 任意一個矩陣的值,相當于a的一段區間和乘b的一段區間和 | |
| \(~\) | 36 | CF1060D | 二分圖匹配,貪心 | |
| 13 | 37 | CF1093A | ||
| \(~\) | 38 | CF1093B | ||
| \(~\) | 39 | CF1093C | ||
| \(~\) | 40 | CF1093D | ||
| \(~\) | 41 | +CF1093E | 帶修改二維數點,bit套pbds / cdq / 卡內存 | |
| 14 | 42 | CF1051B | ||
| \(~\) | 43 | CF1051C | ||
| \(~\) | 44 | CF1051D | ||
| 15 | 45 | +CF1089A | dp,背包,輸出方案 | |
| \(~\) | 46 | +CF1093G | 觀察可得兩點之間的k維曼哈頓距離,可以通過枚舉每一維的正負表示,線段數維護2^k種情況 | |
| \(~\) | 47 | CF1081A | ||
| 16 | 48 | CF1092A | ||
| \(~\) | 49 | CF1092B | ||
| \(~\) | 50 | CF1092C | ||
| 17 | 51 | CF1081B | ||
| \(~\) | 52 | CF1081C | ||
| \(~\) | 53 | CF1081D | ||
| \(~\) | 55 | +CF1092D1 | 貪心 | |
| 18 | 54 | CF1081E | ||
| \(~\) | 56 | +CF1092D2 | 貪心+線段樹模擬+卡時 | |
| \(~\) | 57 | +CF1092F | tree dp | |
| 19 | 58 | +CF1093F | 計數dp+容斥 dp[i][j]表示1到i都合法,且第i個數為j的方案數 | |
| \(~\) | 59 | CF1033A | ||
| \(~\) | 60 | CF1033B | ||
| 20 | 61 | CF1058A | ||
| \(~\) | 62 | CF1058B | ||
| \(~\) | 63 | CF1058C | ||
| 21 | 64 | +CF1092E | 貪心構造,將每顆樹的中心(到最遠點的距離最小)連成菊花圖,中間是直徑最大的樹 | |
| \(~\) | 65 | CF1085A | ||
| \(~\) | 66 | CF1085B | ||
| \(~\) | 67 | CF1085C | ||
| \(~\) | 68 | CF1085D | ||
| 22 | 69 | CF1047A | ||
| \(~\) | 70 | CF1047B | ||
| \(~\) | 71 | CF1047C | ||
| 23 | 72 | +CF1087E | 搜索,邊界處理,直接模擬難以實現時,要想到搜索 | |
| \(~\) | 73 | CF1041A | ||
| \(~\) | 74 | CF1041B | ||
| \(~\) | 75 | CF1041C | ||
| \(~\) | 76 | CF1041D | 雙指針,注意更新邊界 | |
| 24 | 77 | CF1036A | ||
| \(~\) | 78 | CF1040A | ||
| \(~\) | 79 | CF1040B | ||
| 25 | 80 | +CF452E | 插入特殊字符后拼成一個串建后綴自動機,\(right[i][id]\)表示狀態i,代表的子串中,出現在\(id\)串的次數 | |
| \(~\) | 81 | CF474A | ||
| \(~\) | 82 | CF474B | ||
| 26 | 83 | CF1095A | ||
| \(~\) | 84 | CF1095B | ||
| \(~\) | 85 | CF1095C | ||
| \(~\) | 86 | CF1095D | n = 3時,要特判 | |
| 27 | 87 | CF469A | ||
| \(~\) | 88 | CF467A | 下一秒cf崩了,這幾天真的頹 | |
| 28 | 89 | CF1091A | ||
| \(~\) | 90 | CF1091B | ||
| \(~\) | 91 | CF1091C | ||
| \(~\) | 92 | CF1091D | ||
| 29 | 93 | +CF528D | 字符串\(FFT\),對 于\(s\)的每個位置\(i\)的每種字符計算它的匹配數,四種字符的和如果為\(m\)則位置\(i\)可以匹配 | |
| \(~\) | 94 | +CF1091E | 題解 | |
| \(~\) | 95 | CF109A | 完全背包 | |
| 30 | 96 | CF1095E | 左括號看作1,右括號看作-1,線段樹維護前綴和 | |
| \(~\) | 97 | CF1096A | ||
| \(~\) | 98 | CF1096B | ||
| \(~\) | 99 | CF1096C | 多邊形的外接圓 | |
| 31 | 100 | CF1097A | 病了幾天不會做題了 | |
| \(~\) | 1 | CF1097B | ||
| \(~\) | 2 | CF1097C | ||
| \(~\) | 3 | +CF1097D | 期望遞推式\(E(x,k) = \frac{1}{\sigma_0(x)} \sum_{d|x}E(d,k-1)\),\(E(x,k)\)是關于\(x\)的積性函數,因此對預處理\(E(p^m,k)\)合并即可 | |
| 32 | 4 | CF1099A | ||
| \(~\) | 5 | CF1099B | 讀題 | |
| \(~\) | 6 | CF1099C | 讀題 | |
| 33 | 7 | CF1038A | ||
| \(~\) | 8 | CF1038B | ||
| \(~\) | 9 | CF1038C | ||
| 34 | 10 | CF1027A | ||
| \(~\) | 11 | CF1027B | ||
| \(~\) | 12 | CF1027C | 貪心 | |
| 35 | 13 | CF950A | ||
| \(~\) | 14 | CF950B | ||
| 36 | 15 | CF950C | 貪心,線段樹 | |
| 37 | 16 | CF954A | ||
| 38 | 17 | CF1101A | ||
| 39 | 18 | CF1101B | ||
| 40 | 19 | CF1100A | ||
| \(~\) | 20 | CF1100B | ||
| \(~\) | 21 | CF1100C | ||
| \(~\) | 22 | +CF1100E | 二分,拓撲排序。一開始發現幾個DAG并起來一定可以無環,于是寫了二分+拓撲排序判環,輸出方案想了一個奇怪的做法,把圖按編號分為幾個弱聯通分量,之后討論,反向的邊是在兩個分量之間,還是在一個分量內。。然而直接把圖拓撲排序完,然后按拓撲序連邊不就行了嘛。。。awsl | 這段時間事兒太多了,基本沒做題。。放假! |
| 41 | 23 | CF1101C | ||
| 42 | 24 | CF1102A | ||
| \(~\) | 25 | CF1102B | ||
| \(~\) | 26 | CF1102C | ||
| 43 | 27 | +CF1100F | 異或線性基,zkw線段樹,卡常,這個做法很好想,但是卡常之路很艱辛ac代碼 | |
| 44 | 28 | CF1009A | ||
| \(~\) | 29 | CF1009B | 0和2相對位置不變,1可以任意移動 | |
| 45 | 30 | +CF1101D | 類似dfs求樹的直徑 | |
| \(~\) | 31 | CF1101E | ||
| \(~\) | 32 | CF998A | ||
| \(~\) | 33 | CF998B | ||
| \(~\) | 34 | CF998C | ||
| 46 | 35 | CF1105A | ||
| \(~\) | 36 | CF1105B | ||
| \(~\) | 37 | CF1105C | ||
| \(~\) | 38 | CF1105D | ||
| \(~\) | 39 | +CF1105E | 最大獨立集,狀壓,折半。參考了評論區有人提到的做法,把點分成兩份,分別處理他們每種情況下的最大獨集,最后合并答案,具體見代碼把 | |
| \(~\) | 40 | CF1104A | ||
| \(~\) | 41 | CF1104B | ||
| \(~\) | 42 | +CF1104C | 精準鑒別我是zz | |
| 47 | 43 | CF1008A | ||
| \(~\) | 44 | CF1008B | ||
| \(~\) | 45 | CF1102D | ||
| 48 | 46 | CF1108A | ||
| \(~\) | 47 | CF1108B | ||
| \(~\) | 48 | CF1108C | ||
| \(~\) | 49 | CF1108D | ||
| \(~\) | 50 | +CF1108E1 | 最終的最大值不會被覆蓋 | |
| \(~\) | 51 | +CF1108E2 | 上一題加預處理 | |
| 49 | 52 | CF1107A | ||
| \(~\) | 53 | CF1107B | ||
| \(~\) | 54 | CF1107C | ||
| \(~\) | 55 | CF1107D | ||
| 50 | 56 | +CF1108F | 最小生成樹 | |
| \(~\) | 57 | CF864A | ||
| \(~\) | 58 | CF864B | ||
| 51 | 59 | CF1099D | 推式子,貪心 | |
| \(~\) | 60 | CF864C | 模擬 | |
| 52 | 61 | +CF786B | 線段樹優化建圖 | |
| \(~\) | 62 | CF897A | ||
| \(~\) | 63 | CF897B | ||
| 53 | 64 | CF897C | 模擬 | |
| \(~\) | 65 | CF899A | ||
| \(~\) | 66 | CF899B | ||
| 54 | 67 | CF1037A | ||
| \(~\) | 68 | CF1037B | ||
| \(~\) | 69 | CF1037C | ||
| 55 | 70 | CF1106A | ||
| \(~\) | 71 | CF1106B | ||
| \(~\) | 72 | CF1106C | ||
| \(~\) | 73 | CF1106D | ||
| 56 | 74 | +CF1107E | 區間dp,記憶化搜索, | |
| 57 | 75 | CF1111A | ||
| \(~\) | 76 | CF1111B | 注意邊界 | |
| \(~\) | 77 | CF1111C | 注意邊界 | |
| 58 | 78 | CF1110A | ||
| \(~\) | 79 | CF1110B | ||
| \(~\) | 80 | CF1110C | ||
| \(~\) | 81 | +CF1110E | 注意操作對差分序列的影響 | |
| 59 | 82 | CF1114A | ||
| \(~\) | 83 | CF1114B | 猜結論 | |
| \(~\) | 84 | CF1114C | 運算爆long long | |
| 60 | 85 | CF1114D | 區間dp | |
| 61 | 86 | CF1113A | 在家躺幾天,回歸本質了 | |
| \(~\) | 87 | CF1113B | 讀錯題。 | |
| \(~\) | 88 | CF1113C | ||
| \(~\) | 89 | CF1113D | 細節寫炸。 | |
| 62 | 90 | +CF1109D | 計數。題意:求給定兩點之間的邊權和為\(m\),總點數為\(n\)個的樹的個數。做法: 固定兩點之間邊的數目\(e\),挑出\(e\)個點的方案數為\(A_{n-2}^{e-1}\),這條鏈上的邊權和為\(m\),利用隔板法可知方案數為\(C_{m-1}^{e-1}\),其余的邊的邊權都可以任意設定,因此方案數為\(m^{n-e-1}\),最后還需要的就是,其余的點以鏈上的點為基礎構成的森林的方案數。根據Cayley's formula的一般形式,可知點集\(\{ 1,2,..,n\}\) 構成的森林,且其中\(\{1,2,...,k\}\)屬于不同的樹,的方案數\(T(n,k) = kn^{n-k-1}\),證明。因此答案可表示為 \(\sum _{e=1}^{min(n-1,m)}A_{n-2}^{e-1}C_{m-1}^{e-1}m^{n-e-1}T(n,i+1)\) | |
| \(~\) | 91 | CF1117A | ||
| \(~\) | 92 | CF1117B | ||
| \(~\) | 93 | +CF1117C | 對于每個a[i],找到最小的經過的周期數k,解不等式,答案一定在交點附近,討論正負,驗證 | |
| \(~\) | 94 | +CF1117D | 答案等價于\(\sum_{i} C_{n-im}^i\),手推幾組可以發現\(m=2\)時答案為\(Fib(n)\),然后發現\(dp(n) = dp(n-1) + dp(n-m)\) 矩陣快速冪求解 | |
| 63 | 95 | CF1131A | ||
| \(~\) | 96 | CF1131B | ||
| \(~\) | 97 | CF1131C | ||
| \(~\) | 98 | +CF1131F | 倒著考慮整個過程,其實就是每次把一個區間的兩個數之間切成兩半,那么這顯然可以構造一顆二叉樹,每個非葉子節點代表切的那一刀,葉子節點表示最后這個位置的數字,那么如果我構造出了這顆二叉樹,就顯然可以dfs一遍輸出葉子節點的值即可。現在考慮自底向上的構造這棵樹,對于一個分割隔開的兩個點中的任意一個,如果它已經出現了,就把這個點所在的樹的根接到當前節點上,如果沒有,就新建一個節點作為葉子節點,查詢一個點所在樹的根可通過并查集實現,復雜度不考慮并查集是O(n)的 代碼然而崩了沒寫出來。。。當時認為直接用并查集+vector模擬合并的過程會tle,之后意識到如果每次都用小的合并到大的里,復雜度貌似是\(O(nlogn)\)? | |
| 64 | 99 | +CF1109E | 任意模數區間乘\(x\),單點除\(x\),區間求和。考慮將\(Mod\)分解,將每個\(x\)按素因子是否屬于\(Mod\)分成兩個集合,第一個集合是所有的屬于\(Mod\)的因子,第二個集合是剩余的因子。對于第二個集合的因子,他們的乘積一定與\(Mod\)互素,因此一定存在逆元,這部分的除法可以轉化為乘逆元;對于第一集合顯然它的因子總數不多,所以我們對每個因子存下它的指數項,做除法時直接減去對應的指數項。考慮用線段樹維護答案,每個節點維護的\(Lazy\)標記,包含集合一中每個素因子及其指數項,集合二的乘積,以及答案。需要注意的是一開始的序列我們要將他們當作\(lazy\)標記,避免做除法時出現問題。還要注意合并答案時會多次用到集合一中素數的次冪,需要將預處理出來,否則會\(Tle\)。Code | |
| \(~\) | 100 | +CF1131D | 建圖,倒著拓撲序遞推 | |
| \(~\) | 1 | CF1130A | ||
| \(~\) | 2 | CF1130B | ||
| \(~\) | 3 | CF1130C | ||
| \(~\) | 4 | +CF1130D1 | 每次取當前節點走的最遠的糖 | |
| 65 | 5 | +CF1130D2 | 根據上一題的結論,對于一個起點\(s\),我們考慮每個車站發完所有糖的時間,取個最大值就是答案 | |
| \(~\) | 6 | CF1023A | ||
| \(~\) | 7 | CF1023B | ||
| 66 | 8 | CF1118A | ||
| \(~\) | 9 | CF1118B | ||
| \(~\) | 10 | CF1118C | ||
| \(~\) | 11 | CF111F1 | ||
| 67 | 12 | +CF1129B | 構造 | |
| \(~\) | 13 | CF984A | ||
| \(~\) | 14 | CF984B | ||
| 68 | 15 | CF1118D1 | ||
| \(~\) | 16 | CF1118D2 | ||
| \(~\) | 17 | +CF984C | 判斷分母\(q\),是否包含一個因子\(a\),沒有出現在\(b\)內。每次從\(q\)中除去它與\(b\)的\(gcd\),同時將\(b\)修改為他們的\(gcd\),\(b,q\)的下降速度都是\(log(10^{18})\),總體是一個\(log\),正確性顯然。。。 | |
| 69 | 18 | +CF1129C | \(unoldered\_set\)大法好!給定一空串s,長度\([1,4]\)的\(26\)個\(2\)進制電碼,代表不同的字母,每次在\(s\)后添加一個\(0\)或\(1\),問當前的串\(s\),及其子串可以表示多少種不同的轉碼后的字符串。首先,對于長度不同的\(01\)串,一定不可能被轉成相同的字符串,對于一個固定的\(01\)串,兩種不同的合法分割方法一定可以構成不同的轉碼后的串。因此,對于\(01\)串中每個區間\(dp\)預處理這個區間有多少種合法的劃分,\(F(l,r)\)表示區間\([l,r]\)的合法劃分方案數,對于長度相同的串,\(hash\)判重,統計答案即可。一開始\(set\)超時了,\(unolder\_set\)差\(4ms\)超時,艱難卡過去了。。。Code | |
| 70 | 19 | +CF1131E | 對于\(p1*p2*...*pn\)倒著考慮整個字符串乘法的過程。情況一:假設當前獲得的字符串\(Now\)包含2種及以上種類數的字母,那么答案就是枚舉剩余的沒有成進來的串的所有字符,是否可以與\(Now\)的前綴后綴疊加更新答案。情況二:對于\(Now\)如果它是只有一種字符串考慮將它與之后的串合并,如果可以合并出一個只包含一種的串就繼續合并,如果不行,計算出乘法之后的前后綴,更新答案進入情況一。注意對答案的更新 | |
| \(~\) | 20 | CF1013A | ||
| \(~\) | 21 | CF1013B | ||
| 71 | 22 | CF1132A | A 3發過 B 2發過。 | |
| \(~\) | 23 | CF1132B | ||
| \(~\) | 24 | CF1132C | ||
| \(~\) | 25 | +CF1132F | 區間dp, 復雜度是\(O(n^326)\),算起來應該超時嚴重。。。剪剪枝,卡卡常。。最后發現主要原因是多寫了一組無用的轉移導致\(Tle\)的 | 出思路+寫代碼30min,調試+懷疑人生50min。 |
| 72 | 26 | +gym102059A | 題解 | |
| 73 | 27 | CF1046C | ||
| \(~\) | 28 | CF1051A | ||
| 74 | 29 | CF1138A | ||
| \(~\) | 30 | +CF1138B | 任意等分為兩組,計算兩組有用人數的差值,交換不同種類的演員,將差值調整為0 | |
| \(~\) | 31 | CF1138C | 讀題。 | |
| 75 | 32 | CF1137B | kmp,貪心 | |
| \(~\) | 33 | CF1133A | ||
| \(~\) | 34 | CF1133B | ||
| \(~\) | 35 | CF1133C | ||
| \(~\) | 36 | CF1133D | ||
| \(~\) | 37 | CF1133E | ||
| \(~\) | 38 | +CF1133F1 | 排序之后,倒著\(dp\),\(dp[i][j]\)表示選了以第i個數作為左端點的區間,i到n中一共使用了j個區間的最大覆蓋范圍,討論轉移:一種左端點在當前區間內部,用對應右端點最遠的更新,另一種左端點在外部,用這些\(dp\)值的最大值更新答案 |
----------- update 2019/3/10
打算之后按套題更新。。。盡量完整的補完一套題。希望能堅持下去吧。。。
| Codeforces Round #545 (Div. 1) | C.Museums Tour | AC | 官方題解 Code空間時間都卡滿 |
| \(~\) | E. Train Car Selection | AC | Code操作1和操作3后,答案一定是最左端的點,答案的都容易維護。對于操作2,我們維護一個左下凸的凸殼,顯然這個答案點一定在凸殼上,并且維護凸殼之上的修改操作,對于新加的點答案一定是這一段的左端點,它的實際值為0,于是我們就可以假設它上面打著修改標記,計算它應有的值,然后加入這個點。加等差數列不會改變凸殼上應有的點,我們可以在凸殼上三分,或者直接從棧彈棧頂,直到找出實際上的底部的點。 |
| \(~\) | F. Matches Are Not a Child's Play | AC | 題解 |
| Codeforces Round #544 (Div. 3) | F2. Spanning Tree with One Fixed Degree | - | |
| Educational Codeforces Round 61 (Rated for Div. 2) | D. Stressful Training | - | |
| \(~\) | E. Knapsack | - | |
| \(~\) | G. Greedy Subsequences | - |
轉載于:https://www.cnblogs.com/RRRR-wys/p/10099078.html
總結
以上是生活随笔為你收集整理的Codeforces 刷题记录(已停更)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离散哈特莱变换(DHT)及快速哈特莱变换
- 下一篇: 假称租电脑转手就卖了假称租电脑转手就卖了