noip訓練營內部試題-分糖果
摘自:清北學堂noip訓練營試題t2
題目:分糖果
分糖果(candy)
time limit:1000ms memory limit:128mb
題目描述:
總共有n顆糖果,有3個小朋友分別叫做l,y,k。每個小朋友想拿到至少k顆糖果,但這三個小朋友有乙個共同的特點:對3反感。也就是說,如果某個小朋友拿到3顆,13顆,31顆,333顆這樣數量的糖果,他就會不開心。(也即它拿到的糖果數量不包含有一位是3)
lyk掌管著這n顆糖果,它想問你有多少種合理的分配方案使得將這n顆糖果全部分給小朋友且沒有小朋友不開心。
例如當n=3,k=1時只有1種分配方案,當n=4,k=1時有3種分配方案分別是112,121,211。當n=7,k=2時則不存在任何一種合法的方案。
當然這個答案可能會很大,你只需輸出答案對12345647取模後的結果就可以了。
輸入格式(candy.in)
第一行兩個數表示n,k。
輸出格式(candy.out)
乙個數表示方案總數。
輸入樣例
99999 1
輸出樣例
9521331
對於30%的資料n<=100
對於50%的資料n<=1000。
對於另外30%的資料k=1。
對於100%的資料3<=n<=10^10000,1<=k<=n/3,且n,k不包含前導0。
題解:50分 暴力
#include
#include
#define mod 12345647
using namespace std;
int n,k,ans;
bool check(int x)
return 1;
}int main()
}cout<100分 數字dp
/*列舉兩個數,第三個數是確定,判斷一下。
f[i]表示i這個數字是否有3
dp[i][j][0/1][0/1][0/1]來表示當前從高到低第i位,並且這一位需要向它的高位進j位 j=[0,2] 這3個數分別是否超過了k
NOIP訓練營內部試題 數數(樹形DP 倍增)
摘要 本文清北學堂noip訓練營試題t3試題。樣例讀入 4 1 21 3 2 4樣例輸出 8樣例解釋 解析 樹形dp 倍增 回想倍增法求lca的過程 從大到小列舉k,每次跳2 k步,只要不越界就跳,最後一定能跳到lca 因為跳的都是2的冪次步,所以每跳一步就是二進位制加了乙個1 先預處理fa i k...
牛客提高訓練營2B 分糖果
題目 發現自己一年之前非常垃圾 題目大意是給你乙個 n 個點的環,給每個點乙個 1,a i 的取值,並且滿足環上任意相連兩點權值不能相等,求方案數 考慮斷環為鏈,發現不大會 不妨考慮所有 a i 均相等的情況,設 m a i 對於第乙個點,有 m 種選擇,其後每乙個點的取值都不能和上乙個相等,即 m...
牛客寒假演算法基礎訓練營3 G 糖果
傳送門 在乙個幼兒園裡面有n個小朋友,分別編號1,2,n1,2,n。在這些小朋友中有一些小朋友互為朋友關係,總共有 mathit mm對朋友。作為幼兒園老師,你想買一些糖果分給小朋友,你知道第i個小朋友想要至少想要ai個糖果。個糖果,否則他就會不開心。同時,如果乙個小朋友得到的糖果數小於他某個朋友得...