1. 程式人生 > >Codeforces Round #460 (Div. 2) 919 筆記

Codeforces Round #460 (Div. 2) 919 筆記

數據 arr sub 輸出 nts 完美 無限 tutorial 目標

A. Supermarket
輸入n,m, (1?≤?n?≤?5?000, 1?≤?m?≤?100)表示n組價格數據和目標重量m
接下來n組價格數據,表示為a元b千克,每組無限取
求最小花費
B. Perfect Number
輸入k,1?≤?k?≤?10?000,求第k個完美數
完美數定義為數位和=10
(tutorial中說難度可以升級為k<1e18)->用數位dp可解
C. Seat Arrangements
輸入n,m,k (1?≤?n,?m,?k?≤?2?000)表示nm的課室,有k人
要求k人橫著坐或豎著坐,求方案數
輸入.表示空位,
表示已坐
(如果是任意連著坐,難度好像很大?)
D. Substring


輸入n,m <3e5 表示n點m條有向邊
第二行輸入由小寫字母形成的字符串,表示每個點上的字符
接著輸入邊
路徑的值為路徑上出現最多字母的個數,求路徑的最大值,無窮輸出-1
E. Congruence Equation
輸入a,b,p,x (2?≤?p?≤?10e6?+?3, 1?≤?a,?b?<?p, 1?≤?x?≤?10e12).
求多少個n(1<=n<=x)滿足n(a^n)=b(mod p)(p是素數)
F. A Game With Numbers
A和B玩遊戲,每人8張牌,每張牌的值為0到4,當輪到某人時,要從兩人手中各拿一張牌a和b,要求a
b!=0,然後用c=(a+b)%5替換掉自己拿的牌,如果有人手上全是0,就贏了。給出T組數據,每組給出兩人手上各牌的值,給出誰先手,問在最優策略下,誰能贏,或者打平。
(1<=T<=1e5)





筆記(非題解):

A B 水題
C 橫著、豎著暴力枚舉即可
D 原先做法dp[i]表示當前i到之後路徑上最大值,另用輔助數組d[i][j]表示i最優時顏色j的數目
實際上只要d[i][j]即可,表示到i時j的最大值,轉移維護即可
是DAG用上法,有環則-1
E

  1. n%p的周期為p,
  2. a^n%p的周期為p-1,
  3. 整個左式的周期為p(p-1)
    由1知n=i
    p+j
    a^(p-1)%p=1
    令n=i(p-1)+j
    由歐拉降冪公式知a^n%p->a^(n%(p-1))%p->a^j%p
    (i
    (p-1)+j)a^j==b
    ->j-i==b/(a^j)
    ->i==j-b/(a^j)
    枚舉j求i,求n,然後不斷+p
    (p-1),判斷是否ok即可

F 留坑

Codeforces Round #460 (Div. 2) 919 筆記