Codeforce 613 A. Peter and Snow Blower 解析(思維.幾何) 今天我們來看看CF613A 題目連結 題目 給你一個點\(P\)和\(n\)個點形成的多邊形(照順或逆時針順序給),求這個多邊形繞著\(P\)轉最後可以造成的面積.(有關正式的"旋轉"定義請看原題) 前言 儲存點的座標時沒想過要用\(pair<long\ long,long\ long>\),結果debug超久 想法 首先要注意到:由於題目的旋轉的定義是把每個點都對於點\(P\…
A. Peter and Snow Blower 题目连接: http://www.codeforces.com/contest/613/problem/A Description Peter got a new snow blower as a New Year present. Of course, Peter decided to try it immediately. After reading the instructions he realized that it does not…
Peter and Snow Blower 题意:有n(3 <= n <= 100 000)个点的一个多边形,这个多边形绕一个顶点转动,问扫过的面积为多少? 思路:开始就认为是一个凸包的问题,像poj2187求点对平方的最大值一样,但是有一个点是确定的(ps:这道题在div1里面可是A啊!这么复杂?),所以直接求解即可,时间复杂度也就O(n);还有就是怎么求多边形到确定点的最小距离呢?这就不只是暴力求点对之间的距离这么简单了.因为一个多边形绕一个点转动时,有时候是定点到边的距离,所以转化为了点…
C - Peter and Snow Blower Peter got a new snow blower as a New Year present. Of course, Peter decided to try it immediately. After reading the instructions he realized that it does not work like regular snow blowing machines. In order to make it work…
Codeforce 1425 A. Arena of Greed 解析(思維) 今天我們來看看CF1425A 題目連結 題目 略,請直接看原題. 前言 明明是難度1400的題目,但總感覺不是很好寫阿,而且以下題解我感覺有些地方我也懵懵懂懂的,不是超級確定 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先,這題目有一個除以\(2\)的動作,因此有可能聯想到\(:\)我們必須用二進位來看待數字\(n\). 有一個不等式非常重要,…
Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維) 今天我們來看看CF1095E 題目連結 題目 給你一個括號序列,求有幾個字元改括號方向能夠讓整串變成合法. 前言 這題能幫助熟悉有關Regular Bracket Sequence的能夠維護的狀態. @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 只要維護左括號為\(1\),右括號為\(-1\)的前(後)綴和,並維護…
Codeforce 1163 C2. Power Transmission (Hard Edition) 解析(思維.幾何) 今天我們來看看CF1163C2 題目連結 題目 給一堆點,每兩個點會造成一個直線,求有多少個直線對相交. 前言 這題提供了一個表達直線的方法. @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 這題的難點其實是在於如何表達一條直線,且要認為用\(map\)不會超時(我也不懂為什麼最多會有\(10^6\)個不…
Codeforce 1311 F. Moving Points 解析(思維.離散化.BIT.前綴和) 今天我們來看看CF1311F 題目連結 題目 略,請直接看原題. 前言 最近寫1900的題目更容易不看題解了,不知道是不是較少人\(AC\)的同難度題目會比較簡單. @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先注意到,如果\(x\)座標上的前後兩點\(x_i,x_j\),\(x_i<x_j\),如果\(v[x_i]>v…
Codeforce 1417 B. Two Arrays 解析(思維) 今天我們來看看CF1417B 題目連結 題目 略,請直接看原題. 前言 a @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 注意到,如果\(T\)是奇數,那麼由於奇數必定是偶\(+\)奇(在兩個正數相加時),因此如果\(T\)是奇數,就分成兩個奇數和偶數各一個陣列即可. 如果\(T\)是偶數,那麼我們可以把\(<\frac{T}{2}\),\(>\frac…
Codeforce 1417 C. k-Amazing Numbers 解析(思維) 今天我們來看看CF1417C 題目連結 題目 略,請直接看原題. 前言 我實作好慢... @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 只要注意到,真正重要的是對於某個數字,區間至少要多大才可以每個區間都包含到它.因此我們維護對於每種數字,其和下一個同種數字的最大距離,且還需要考慮元素到頭和到尾的距離. 如此一來就可以知道對於每種數字最短需要…
Codeforce 702 D. Road to Post Office 解析(思維) 今天我們來看看CF702D 題目連結 題目 略,請直接看原題. 前言 原本想說會不會也是要列式子解或者二分搜,沒想到意外的是思考非常簡單的一題 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 如果坐車\(k\)公里加上修理比走路\(k\)公里還要慢,那麼我們只需要先坐車\(k\)公里,然後不要修,直接走路走完全程. 如果坐車\(k\)公里加上…
Codeforce 796 C. Bank Hacking 解析(思維) 今天我們來看看CF796C 題目連結 題目 略,請直接看原題. 前言 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先稍微在腦中模擬一下大概整個流程是怎麼進行的,會發現以下幾件事: 選取點\(v\)開始整個流程,之後是對以\(v\)為根的樹"Hack",並且銀行防禦力增加只會加到子節點 每個點最多被\(+2\) 那麼我們可以想到以下的結論:…
Codeforce 685 B. Kay and Snowflake 解析(思維.DFS.DP.重心) 今天我們來看看CF685B 題目連結 題目 給你一棵樹,要求你求出每棵子樹的重心. 前言 完全不知道我怎麼想到的 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先會感覺是樹狀DP,並且狀態是每個子樹的重心. 在建重心剖分樹的時候,我們找根為\(v\)的樹的重心的方法是看看目前節點有沒有大小大於目前樹的一半(\(size[v…
Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的交集非空. 前言 組合不會算,也想不到離散化 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先需要找個依據來枚舉開始計算,而我們可以觀察到:對於任何一個\(k\)個區間的交集,這個交集的左界一定是某個區間的左界,也就是說我們可以…
Codeforce 1420 C2. Pokémon Army (hard version) 解析(思維) 今天我們來看看CF1420C2 題目連結 題目 略,請直接看原題. 前言 根本想不到這個等價的想法 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先注意到,如果數列其中一段是遞增數列,那麼我們最好的方式就是減去最小的那個數字並且加上最大的那個數字.因為這樣做得到的值是\(\max-\min\),而如果我們選取這遞增數列…
Codeforce 1420 B. Rock and Lever 解析(思維) 今天我們來看看CF1420B 題目連結 題目 給一個數列\(a\),求有多少種\((i,j)\)使得\(i<j\)且\(a_i\&a_j\ge a_i\oplus a_j\) 前言 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 觀察到,由於\(1\&1=1\),\(1\oplus1=0\),所以\(a_i\&a_j\)有的\(b…
Codeforce 1420 A. Cubes Sorting 解析(思維) 今天我們來看看CF1420 題目連結 題目 給一個數列\(a\),求能不能在不超過\(\frac{n(n-1)}{2}-1\)次相鄰元素的調換下,得到遞增數列. 前言 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 注意到,這是\(A\)題,所以一定不會要你構造太難的東西. 注意到\(\frac{n(n-1)}{2}-1\)很可疑,這一定代表某個東西.…
Codeforce 682 D. Alyona and Strings 解析(思維.DP) 今天我們來看看CF682D 題目連結 題目 略,請直接看原題. 前言 a @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先會感覺應該是類似\(LCS\)的問題,但是有一點變形.因此我們會先想到應該是\(DP\),而可能會想到另外兩個狀態是: 共同部分是不是目前兩個字串前綴的結尾 最小的分段是幾段 也就是\(:dp[i][j][end]…
Codeforce 61 E. Enemy is weak 解析(思維.離散化.BIT.線段樹) 今天我們來看看CF61E 題目連結 題目 給一個數列\(a\),求有多少\((i,j,k)\),\(i<j<k\),使得\(a[i]>a[j]>a[k]\) 前言 學到BIT的新用法 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先可能會想到要枚舉\(j\),而我們只要知道\(a[j]\)前有多少比較大的元素,\(…
Codeforce 1328 E. Tree Queries 解析(思維.LCA) 今天我們來看看CF1328E 題目連結 題目 給你一棵樹,並且給你\(m\le2e5\)個詢問(包含\(k\)個點),求能不能找到一個從點\(1\)開始的路徑,使得這\(k\)個點離這個路徑的距離\(\le1\) 前言 久違的沒看解答寫的題目,故寫題解 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 可以觀察到,題目的敘述表示,對於一個節點\(v…
Codeforce 1041 E. Tree Reconstruction 解析(思維) 今天我們來看看CF1041E 題目連結 題目 略,請直接看原題 前言 一開始完全搞錯題目意思,還以為每次會刪除一條邊 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 注意到同一個點對\((a_i,b_i)\)如果出現\(k\)次,代表這兩點中間有\(k\)個比\(a_i\)小的點(記得\(a_i<b_i\)). 那麼我們只要先把所有點對保存…
Codeforce 342 E. Xenia and Tree 解析(思維.重心剖分) 今天我們來看看CF342E 題目連結 題目 給你一棵樹,有兩種操作,把某點標成紅色或者查詢離某點最近的紅點有多遠. 前言 這題我是當作學習重心剖分的習題看待的,最詳細的版本請看教學文 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 每兩個樹上的點,其重心剖分樹(CD樹)上的\(LCA\)一定在其最短路徑上.因此當我們把點\(v\)塗成紅色時,…
Codeforce 1029 D. Concatenated Multiples 解析(思維) 今天我們來看看CF1029D 題目連結 題目 給你一個序列\(a\)和一個數字\(k\),求有幾種indices pair可以讓兩個數字串接在一起之後可以被\(k\)整除. 前言 set,map這些東西的常數真的有夠高阿 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 \(a_i\)和\(a_j\)串接起來是\(a_i\times 1…
Codeforce 550 D. Regular Bridge 解析(思維.圖論) 今天我們來看看CF550D 題目連結 題目 給你一個\(k\le100\),請構造出一個至少有一個Bridge的,每個點的degree都是\(k\)的無向圖. 前言 學到了Handshaking Lemma @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先既然要有一個Bridge,我們就從已經有一個Bridge的圖開始構造. 可能會發現到\(…
Codeforce 1017 D. The Wu 解析(思維.二進位運算) 今天我們來看看CF1017D 題目連結 題目 略,請直接看原題 前言 官方解答實在看不懂...之後還記得的話再補那個做法吧 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 只要注意到\(n\le12\)代表所有可能出現的數字\(\le\sum\limits_{i=0}^{11}2^i=2^{12}-1=4096-1\),那就會注意到這題的\(m,q\le…
Codeforce 811 C. Vladik and Memorable Trip 解析(思維.DP) 今天我們來看看CF811C 題目連結 題目 給你一個數列,一個區段的數列的值是區段內所有相異數的\(XOR\)總和.你可以選任意多的區段,求最大的所有區段的值的總和.然而所有同樣的數字不是完全沒有被包含在區段裡,不然就是要全部在同個區段裡. 前言 這題我一直到看了解答才知道為什麼不是\(O(n)\),題目一直沒搞清楚 @copyright petjelinux 版權所有 觀看更多正版原始文章…
Codeforce 999 D. Equalize the Remainders 解析(思維) 今天我們來看看CF999D 題目連結 題目 略,請直接看原題 前言 感覺要搞個類似\(stack\)的東西來儲存下一個沒滿的\(\mod m\)是哪一個才能避免\(O(m^2)\)的複雜度,沒想到反過來想,儲存前一個滿出來的是什麼就可以了. @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先可能會想到,先把每個\(mod\)值都儲存…
Codeforce 500 D. New Year Santa Network 解析(思維.DFS.組合.樹狀DP) 今天我們來看看CF500D 題目連結 題目 給你一棵有邊權的樹,求現在隨機取\(3\)點,求這三點互相距離總和的期望值. 前言 今天寫的題目都是看解答就會寫,原本就沒有的自信心又要更低了 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 \(3\)個點要考慮的事情太多了,首先只要注意到以下一件事,那麼其他的事情就和…
Codeforce 722 D. Generating Sets 解析(思維) 今天我們來看看CF722D 題目連結 題目 略,請直接看原題 前言 真的是沒想到... @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 觀察到,\(x\times2,x\times2+1\)這兩個運算反過來看就是把任一個數字除以\(2\)(因為整數型別會自動捨去小數點,所以整數型別的\(\frac{x}{2}=\lfloor\frac{x}{2}\r…
Codeforce 111 B. Petya and Divisors 解析(思維) 今天我們來看看CF111B 題目連結 題目 略,請看原題 前言 看了別人的解答就豁然開朗 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 因為如果真的每個數字都檢查一遍,複雜度會輕鬆超越\(O(n^2)\),因此會想到要對\(i\)前面的\(index\)做一些預處理.但是如果儲存\(1\sim i-1\)的\(x\)的\(l.c.m.\),數…