AHOI2009 同類分布

2021-10-04 03:05:40 字數 683 閱讀 9789

點此看題

首先肯定想到我們要把數字和放進狀態中,但是原數會有點棘手。

我們可以先列舉數字和(也就是模數),設dp[

i][j

][k]

[l

]dp[i][j][k][l]

dp[i][

j][k

][l]

,為前i

ii位,是否頂到上界,數字和為k

kk,餘數為l

ll,我們最後要是k=k=

k=模數,並且l=0

l=0l=

0,然後就可以轉移了。

#include

#include

#define int long long

intread()

int l,r,cnt,a[20]

,dp[20]

[2][

200]

[200

],mod;

intdfs

(int pos,

bool equal,

int sum,

int mod)

return t;

}int

calc

(int num)

return res;

}signed

main()

AHOI2009 同類分布

題目大意 問在區間 l,r 內的正整數中,有多少數能被其個位數字之和整除。思路 數字dp。極端情況下,每一位都是9,所以各位數字之和不超過9 18。為了方便這裡用了9 19 f i j k flag 表示dp到從左往右第i位時,各位數字之和為j,這個數字在模mod意義下為k。flag表示是否為邊界情...

AHOI2009 同類分布 題解(數字DP)

題目大意 求 l,r 中各位數之和能被該數整除的數的個數。0 leq l leq r leq 10 顯然數字dp。搜尋時記錄 pos 表示當前位置,sum 表示各位數字之和,st 表示原數,limit 表示最高位限制。如果有時間我會寫一篇部落格學習數字dp,希望不要咕咕 轉移自然是 dfs pos ...

Ahoi2009 self 同類分布

題意 給出a,b,求出 a,b 中各位數字之和能整除原數的數的個數。這道題把上界狀態編入方程中時空複雜度才能過 算見注 include include define int long long using namespace std int f 2 20 170 170 vis 2 20 170 1...