BZOJ 1111: [POI2007]四进制的天平Wag
SB题。 很容易想到先二话不说把十进制转四进制,然后我们考虑DP: 设 \(f_{i}\) 表示从高位到低位的第 \(i\) 位填成目标状态的最小步数/方案数 设 \(g_{i}\) 表示从高位到低位的第 \(i\) 位填成目标状态 \(+1\) 的最小步数/方案数(因为涉及到向下一位退位) 那么我们容易得到以下转移: \[ f_i\leftarrow f_{i-1}+num_i\\f_i\leftarrow g_{i-1}+4-num_i\\g_i\leftarrow f_{i-1}+num_i+1\\g_i\leftarrow g_{i-1}+3-num_i\\ \] 然后就做完了233 #include<cstdio> #include<cstring> #include<algorithm> #define RI register int #define CI const int& using namespace std; const int N=3005,mod=1e9; struct data { int x,y; inline data(CI X=1e9,CI Y=0) { x=X; y=Y; } friend inline data operator + (const data& A,CI x) { return data(A.x+x,A.y); } }f[N],g