P4127 AHOI2009 同類分布

2022-05-20 08:12:49 字數 1109 閱讀 5483

給出兩個數a,b

a,b,求出[a,

b][a

,b]中各位數字之和能整除原數的數的個數。

發現題目有兩個變數

數字之和

原數於是必須想辦法設計乙個只有一種變數的數字dp,

發現唯有固定數字之和才可以在dfs中將取模作為狀態方便地轉移

記搜元素:

當前數字

數字之和

原數的模值

#include

#define reg register

#define pb push_back

typedef

long

long ll;

std::vector <

int> bt;

ll dp[19]

[205][

205]

;int mod;

ll dfs

(int k,

int flag,

int sum_1,

int sum_m)if(

!flag &&

~dp[k]

[sum_1]

[sum_m]

)return dp[k]

[sum_1]

[sum_m]

;int end = flag?bt[k]:9

; ll tmp =0;

for(reg int i =

0; i <= end; i ++

) tmp +

=dfs

(k-1

, flag&&i==end, sum_1+i,

(sum_m*

10+ i)

%mod);if

(!flag) dp[k]

[sum_1]

[sum_m]

= tmp;

return tmp;

}ll work

(ll x)

return res;

}int

main()

題解 P4127 AHOI2009 同類分布

description 給出兩個數a,b,求出 a,b 中各位數字之和能整除原數的數的個數。sample input 10 19 sample output solution 設計狀態 f len sum res 表示倒數還有 i 位要做,當前的和是 sum 摸掉模數後剩下的數是 res 那麼我們直...

AHOI2009 同類分布

點此看題 首先肯定想到我們要把數字和放進狀態中,但是原數會有點棘手。我們可以先列舉數字和 也就是模數 設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,然後就可以...

AHOI2009 同類分布

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