這場大概花了 4 個小時來寫這 6 題,難度算中間偏易。
- A - The Number of Even Pairs
題意:有 N 顆偶數球和 M 顆奇數球,問有幾種方法選兩顆球,使得球上數字相加為偶數。
解法:兩奇數或兩偶數相加為偶數,所以答案即為C(N,2)+C(M,2)
1 |
|
- B - String Palindrome
題意:判斷一個長度為 N 的字串 S 是否本身為迴文,且 S[1:N−12] 和 S[N+32:N] 也是迴文。
解法:直接判斷。
1 |
|
- C - Maximum Volume
題意:給定一實數 L,求 x1x2x3 的最大值,其中 x1+x2+x3=L。
解法:當 x1=x2=x3=L3 時有最大值。
1 |
|
- D - Banned K
題意:給定 N 顆球,第 i 顆球上面的數字為 Ai,問 k=1,2,3,…,N,問沒有第 i 顆球時,有幾對球的數字是一樣的。
解法:我們可以先把全部的對數 ans 求出來,假設數字為 A 的有 cnt[Ai]=x 顆,那麼會對 ans 貢獻 C(x,2),如果是屏除第 i 顆球,那麼答案會是 ans−C(cnt[Ai],2)+C(cnt[Ai]−1,2)。
1 |
|
- E - Dividing Chocolate
題意:有一塊巧克力是由 H×W 的小巧克力組成,有白和黑兩種顏色,可以垂直或水平切巧克力,問最小切法使得每塊巧克力最多只有 K 塊白巧可力。
解法:題目給的 H 最多到 10,可以利用二進位枚舉水平切的地方,一邊判斷是不是能夠切 ≤K 塊小白巧克力,一邊計算出還要切多少垂直的刀。
1 |
|
- F - Knapsack for All Segments
題意:給定一個長度為 N 的序列 A,f(L,R) 為滿足以下條件的子序列數量:Ax1+Ax2+Ax3+…+Axk=S and L≤x1≤x2≤x3≤…≤xk≤R。求 ΣNi=1ΣNj=if(i,j)。
解法:我們如果發現一個 x1=i,xk=j 的子序列滿足條件,那麼它會對 f(i,j),f(i−1,j),f(i−2,j),…f(1,j) 貢獻 1,於是我們設一個陣列 dp,dp[i] 代表當前和為 i 的子序列數量,當有新元素(Ax)加入時,利用背包 dp 的方式,加上之前所形成的子元素數量。再來,如果子序列以 Ax 開頭,對於固定右端點 f(i,j)(x≤j) 都會貢獻 x,所以在 dp[Ax] 加上 x,加完一個元素 Ax 後,dp[s]=Σxi=1f(i,x),那麼把這些 dp[s] 加起來就是答案了。
1 |
|
如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)