題解 P4127 AHOI2009 同類分布

2022-06-20 06:18:12 字數 1043 閱讀 9150

\(description:\)

給出兩個數a,b,求出\([a,b]\)中各位數字之和能整除原數的數的個數。

$sample $ \(input:\)

10 19

\(sample\)

\(output:\)

\(solution:\)

設計狀態 \(f[len][sum][res]\) 表示倒數還有 \(i\) 位要做,當前的和是 \(sum\) ,摸掉模數後剩下的數是 \(res\),

那麼我們直接暴力列舉模數,\(len=0\) 最後判斷一下是否 \(sum=mod\)

\(\&\&\)

\(res=0\) 這個時候可以吧答案返回為 \(1\) 。

那麼再套個板子就。。。

#include#define int long long

using namespace std;

int a,b;

const int n=20+1,m=200+1;

int f[n][m][m],digit[n];

inline int dfs(int len,int sum,int res,int p,bool limit)

if(!limit && f[len][sum][res]!=-1) return f[len][sum][res];

int ret=0,up_bound=(limit)?digit[len]:9;

for(int i=0;i<=up_bound;++i)

ret+=dfs(len-1,sum+i,(res*10+i)%p,p,limit&&i==up_bound);

return f[len][sum][res]=ret;

}inline int solve(int n)

for(int p=1;p<=9*cnt;++p)

return ret;

}signed main()

P4127 AHOI2009 同類分布

給出兩個數a,b a,b,求出 a,b a b 中各位數字之和能整除原數的數的個數。發現題目有兩個變數 數字之和 原數於是必須想辦法設計乙個只有一種變數的數字dp,發現唯有固定數字之和才可以在dfs中將取模作為狀態方便地轉移 記搜元素 當前數字 數字之和 原數的模值 include define r...

題解 P2051 AHOI2009 中國象棋

題目鏈結 題目大意 求在 n 行 m 列的棋盤上放置若干個炮使得它們互不攻擊的方案數,對 9999973 取模 動態規劃,計數 分析 沒有炮互相攻擊等價於沒有三個炮在同一行 列 考慮用 f i m 1 m 2 表示前 i 行,有 m 1 列有乙個炮,m 2 列有兩個炮的方案數 可以用刷表法降低思維難...

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

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