原创 CF346A Alice and Bob(博弈+gcd)

Alice and Bob 求n個數的gcd 最後的數列必然是一個以gcd爲首項,公差爲gcd的等差數列 比如:2 4 6 顯然結束 1 3 5 雖然也是等差數列,但還可以繼續下去 所以這題的做法就是求n的數的gcd,然後就可以求

原创 CF467C. George and Job(前綴和+DP)

George and Job 題意:給定一個數組,從中選擇k個長爲m的子段(不重疊),使和最大 分析: f(i,j) 前i個數中選j個長爲m的子段 轉移方程:當前i不選,繼續沿用i-1的值 或者 選最後m個組成一個子序列 dp[i

原创 1279C. Stack of Presents

Stack of Presents 維護最深深度即可 比如先拿一個第5層的,這時最深深度就是5,接下來如果拿第4層的就可以認爲它剛剛已經被移到了最上面,如果要拿第7層的,就需要把上面的移出,然後更新深度 Code: #includ

原创 CF1228C Primes and Multiplication(數論)

Primes and Multiplication 題意:不好描述(逃)戳上面鏈接吧 分析: 題目看起來很複雜,但是理一下其實就是 x的每個質因數在1到n的的質因數集合中出現次數 答案就是x的每個質因數的次數冪(好像很繞,我也不知

原创 CF707C Pythagorean Triples(數論)

Pythagorean Triples 題意:給定一個數,求出另外兩個數,使這三個數構成勾股數 分析: a2=b2−c2,a2=(b−c)∗(b+c)a^2=b^2-c^2,a^2=(b-c)*(b+c)a2=b2−c2,a2=(

原创 CF466C Number of Ways(前綴和,雙指針)

Number of Ways 題意:將一個數組分成連續的三段,有幾種分法可以使三段和相等 分析: 因爲要求和,所以肯定要前綴和(霧),遍歷數組,如果當前和等於sun[n]/3,則這個位置可以爲i,如果當前和等於sum[n]/3*2

原创 CF486C. Palindrome Transformation(貪心)

Palindrome Transformation 題意:給定一個字符串和光標的初始位置,每一步可以左右移動一位或將字符上下加1,求最小步數使之成爲迴文串 分析: 1.要使成爲迴文串,即對應字符相等,無論變左邊的 還是變右邊的 亦

原创 CF118D Caesar‘s Legions(dp)

Caesar’s Legions 題意:將n1個0和n2個1排列,最多允許k1個0或k2個1連續,求排列數 分析: 1.顯然還是線性dp(反正是dp,是不是線性不清楚) 2.最開始的想法:f(i,j,k) 長度爲i的排序,以j結尾

原创 CF706C Hard problem(dp)

Hard problem 題意:給定n個字符串,每個字符串翻轉需要花費一定的費用,要使所有字符串呈字典序輸出(即:s1<=s2。。。。。)且花費最少 分析: 1.顯然線性dp 2.f(i,0) 爲第i個不翻轉,前i個達成字典序的最

原创 CF1283C. Friends and Gifts

Friends and Gifts 題意:n個人互相送禮物,每人送出一個 收到一個,不可以送給自己,給出一個數組,表示第i個人想送給ai,ai=0表示不知道送給誰。給出一個可行方案。 分析: 1.用vt,vt1分別保存 不知道送給

原创 CF1237D Balanced Playlist(st表)

題目傳送 1.先分析-1的情況:最小值的兩倍大於等於最大值,就可以無限循環 2.如果直接暴力的話,肯定超時,我還試了一下。。。 3.考慮最壞的情況,最大值在1,最小值在n,從i+1開始播放,假設中間沒有滿足的情況,需要循環三圈,所

原创 CF888 D. Almost Identity Permutations(數學)

題目傳送 題意:給定n,k,求至少有n-k個ai=i的排列數 分析: 爲方便,用n-k代替k 比如n = 5,k = 1 先看有且僅有1個ai=i的情況:  有且僅有1個ai=i有C51C_5^1C51​種情況,以a1=1爲例  

原创 Codeforces Round #629 (Div. 3)

A. Divisibility Problem 題意:給定a,b兩個數,每次可以將a+1,最少需要幾步可以使a%b==0 分析:水題。。。 代碼如下: #include <iostream> using namespace std