CF327E Axis Walking
Axis Walking
题目描述
给你一个长度为
求有多少种
答案对
Solution
挺简单的一个状压 DP。
考虑
对于
Code
int N, K, A[_N], B[2];
mint f[_M];
i64 val[_M];
inline int lowbit(int x) {return x & -x;}
signed main() {
cin.tie(0)->sync_with_stdio(0);
cin >> N;
For(i, 1, N) cin >> A[i];
cin >> K;
For(i, 1, K) cin >> B[i];
f[0] = 1, val[0] = 0;
int lim = 1 << N;
For(S, 1, lim - 1) {
val[S] = val[S^lowbit(S)] + A[__builtin_ctz(S)+1];
if (val[S] == B[1] || val[S] == B[2]) continue;
for (int t = S; t; t ^= lowbit(t))
f[S] += f[S^lowbit(t)];
}
cout << f[lim-1] << '\n';
}
分类:
标签:
,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2023-01-27 230127 % 你赛