2016年6月15日 星期三

Codeforces Round #356 (Div. 2)

((好久沒po題解了,最近在忙 2016延平電資營YPCS 的題目,到時候我也會一併把題目&祥解放在這裡喔。幫忙按個讚吧!

到時候 pE 的詳解 會在放上去,現在沒空寫 pE

pA : http://codeforces.com/contest/680/problem/A
pB : http://codeforces.com/contest/680/problem/B
pC : http://codeforces.com/contest/680/problem/C
pD : http://codeforces.com/contest/680/problem/D

我AC的code :

pA : http://codeforces.com/contest/680/submission/18303002
pB : http://codeforces.com/contest/680/submission/18310104
pC : http://codeforces.com/contest/680/submission/18308741
pD : http://codeforces.com/contest/680/submission/18450161

題解:

pA :
題意:你有五張已知牌,你想要最小化總和。你可以拿走一次牌,而拿走一次牌中,你只能拿三張or兩張一樣的牌。

那你就維護說可以拿三張最大的是多少,拿兩張最大的是多少,在比較誰可以扣掉得比較多,就好了(感覺這題滿好hack的)

pB :
題意:(簡化過後的)每個點的value=0 or 1,你有一個機器,可以告訴你由你這個點到固定距離的兩個or一個點的value和是多少,問說你可以確定有多少個點value是1

那就從中心擴散,慢慢實作就好了!小心邊界問題就是了

pC :
題意:謎底是一個[2,100]間的數字,你需要判斷這個數字是不是質數!你最多可以問20次,問說這個數字可不可以被你提供的數字整除。

一開始我想說就[2,100]間的25個質數,後來想想:如果是合數,那一定有兩個質因數,只有2^2,3^2,5^2,7^2 < 100 (11^2 = 121 > 100),那麼,只需要在判斷[10,50]之間的質數就好。如果是>50的合數,那一定有<50之間的兩個質數相乘。

所以,這樣剛好問19次

((不信邪的話,就2 ~ 100每個試過一遍嘛!

pD :
題意:(簡化過後的)
定義一個演算法f(x) : if (x<=7) return x; else return f(x-a*a*a) + 1,其中a是最大的數字,符合a*a*a<=f。
現在,給你一個數字X,請求出所有範圍[1,X]的整數中的f(x)的最大值,如果有多個,那請輸出最大的

(看官方題解的作法) :
分兩種case : 用a跟用a-1,下去dfs,就okay了。
詳細的話看我的code吧!

pE : Unsolved


沒有留言:

張貼留言