[CF2086E] Zebra-like Numbers 题解
确简单的啊,可是自己就是想不到。
考虑计算一个数的斑马值。贪心地,尽量选大的斑马数减即可。
考虑 DP,设 d p i , j dp_{i, j} dpi,j 表示 [ 1 , i ] [1, i] [1,i] 中斑马值为 j j j 的数的个数。那么显然有 d p i , j = d p i − m x , j − 1 + d p m x − 1 , j dp_{i, j} = dp_{i - mx, j - 1} + dp_{mx - 1, j} dpi,j=dpi−mx,j−1+dpmx−1,j,其中 m x mx mx 是不大于 i i i 的最大的斑马数。具体地, d p i − m x , j − 1 dp_{i - mx, j - 1} dpi−mx,j−1 表示 [ m x , i ] [mx, i] [mx,i] 中斑马值为 j j j 的数的个数, d p m x − 1 , j dp_{mx - 1, j} dpmx−1,j 表示 1 , m x − 1 1, mx - 1 1,mx−1 中斑马值为 j j j 的数的个数。
记搜即可。