2017-2018 ACM-ICPC, NEERC, Moscow Subregional Contest


2017-2018 ACM-ICPC, NEERC, Moscow Subregional Contest

Problem A. Advertising Strategy

題目描述:給出兩個數\(n, k\),初始時\(a_1=0\),每一天開始時令\(b_i=a_i+x_i\),每天結束時\(a_{i+1}=b_i+min(b_i, \left \lfloor \frac{n-b_i}{2} \right \rfloor)\),其中\(\sum x_i \leq k\),問最少多少天使得\(a_i \geq n\)

solution
\(k\)分為兩部分,一部分為\(x_1\),另一部分為最后一天的\(x\),這樣最優,然后枚舉\(x_1\)即可。

時間復雜度:\(O(klogn)\)

Problem B. Byteland Trip

題目描述:給出一個字符串\(st\),由<, >組成,當\(st_i='<'\)時,\(i\)可以去到\(i\)左邊的任意一個點,當\(st_i='>'\)時,\(i\)可以去到\(i\)右邊的任意一個點。問從任意一個點出發,遍歷所有的點,最終去到\(i\)的方案數,對於每個\(i\)輸出答案。

solution
還沒想到。。。

Problem C. Carpet

題目描述:給出一棵樹,將這棵樹的節點放在一個\(1 000 000 \times 20\)的網格中,每個格只能有一個節點,使得樹邊不相交(樹邊為線段),輸出一種方案。

solution
因為高度只有\(20\)所以只能盡量橫向發展。
\(size[i]\)為子樹\(i\)的大小,\(longest[i]\)\(i\)子樹中\(i\)到葉子的最長距離,\(longid[i]\)為最長鏈中\(i\)的兒子。
因為盡量要橫向發展,所以將最長鏈橫放,假設\(i\)的位置是\((x, y)\),則\(longid[i]\)的位置為\((x+size[i]-size[longid[i]], y)\),即將\(longid[i]\)\(i\)放在同一行,並且給\(i\)的其它兒子留足空間,其它兒子依次放在\(y+1\)行,第一個兒子放在\((x, y+1)\),第二個放在\((x+size[son_1], y+1)\),以此類推,目的是給每棵子樹都留足空間。

時間復雜度:\(O(n)\)

Problem D. Decoding of Varints

題目描述:對整數進行編號:\(0\)編號為\(0\)\(-1\)\(1\)\(1\)\(2\),即當\(x \geq 0\)時,編號為\(2x\),當\(x<0\)時,編號為\(-2x-1\)。有一個數列\(x_i\)(未知),將\(x_i\)的編號化為\(128\)進制,然后除了最高位外,其余的數加\(128\),按順序給出操作后的序列,求原序列。

solution
模擬。

時間復雜度:\(O(9n)\)

Problem E. Empire History

題目描述:給出一個無向圖,將該圖的節點分成兩部分,使得這兩部分分別連通,並且存在兩個非空集合\(u, v\),分別為兩個部分的點的子集,使得\(u, v\)之間兩兩有邊。輸出一種方案。

solution
還不會。。。

Problem F. Fake or Leak?

題目描述:根據ACM的賽制,給出封榜時每個隊伍的做題情況,再給出最終結果排名的連續\(k\)個人的做題情況,問是否可能出現。

solution
先按照規則判斷終榜的順序是否正確,如果正確,再判斷其它人是否都能排在他們的前面或者后面。排在前面的話肯定是假設全部題都答對,看看能不能排在終榜第一個人的前面;至於排在后面,則是根據封榜作為終榜,看看能不能排在終榜最后一個人的后面。

時間復雜度:\(O(n)\)

Problem G. God of Winds

題目描述:給出一個\(n \times m\)的網格圖,網格圖的每條邊都有一個值。現在在每個格子中填一個整數,若是正數\(x\),則在格子的左、下邊加\(x\),右、上邊減\(x\);若是負數\(-x\),則在格子的右、上邊加\(x\),左、下邊減\(x\)。初始時網格的所有邊都是\(0\),問是否存在一種填數的方案使得最后所有邊的值等於給出的邊值。

solution
容易找到規律:若存在方案,則存在無數種方案,即第一個方格填什么數都可以。所以設第一個方格為\(0\),然后推出所有格子的數,然后再驗證所有邊是否正確。

時間復雜度:\(O(nm)\)

Problem H. Hilarious Cooking

題目描述:存在一個序列\(a_i\),滿足\(a_i \geq 0, | a_i-a_{i+1} | \leq 1\),給出某些位置的數和一個數\(T\),問是否存在一個序列\(a_i\),使得\(\sum a_i=T\)

solution
由於\(\sum a_i\)是連續的,所以可以求出\(\sum a_i\)的范圍,然后判斷\(T\)是否在這個范圍內。

時間復雜度:\(O(m)\)

Problem I. Infinite Gift

題目描述:在\(k\)維空間中選\(n\)個向量,然后將\(k\)維空間的所有向量\(a\)\(a+v_i\)連邊。問構成的圖是否是二分圖。

solution
是否是二分圖相當於判斷是否有奇環。
然后隊友找到一個規律:設\(k\)個未知數,列\(n\)條方程,將向量的每一維都模\(2\),然后方程是\(x_1v_{i1} XOR x_2v_{i2} XOR ... XOR x_kv_{ik}=1\)
然后方程有解則表示有奇環,所以可以壓位求解異或方程。

時間復雜度:\(O(\frac{nk^2}{64})\)

Problem J. Judging the Trick

題目描述:在一個\(w \times h\)矩形中有若干個三角形,求矩形中的一個沒有被三角形覆蓋的點。

solution
還不會。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM