【每日一题】33. 简单瞎搞题 (滚动数组 + bitset 优化DP)
补题链接:Here
这个问题的难点在于如何统计出所有和可能出现的情况,并且不能重复。
很容易想到用桶去存储每一个数,即某个和能够组合出来则为1,否则为0
不妨令
但是内存方面需要
那么我们考虑用
代表第
const int N = 110;
bitset<1000010>dp[N];
void solve() {
int n; cin >> n;
dp[0] = 1;
for (int i = 1, l, r; i <= n; ++i) {
cin >> l >> r;
for (int j = l; j <= r; ++j)dp[i] |= (dp[i - 1] << (j * j));
}
cout << dp[n].count() << "\n";
}
写完状态转移方程发现
bitset<1000010> now, nxt;
void solve() {
int n; cin >> n;
now[0] = 1;
for (int i = 1, l, r; i <= n; ++i) {
cin >> l >> r;
for (int j = l; j <= r; ++j)
if (j == l)nxt = (now << (j * j));
else nxt |= (now << (j * j));
now = nxt;
}
cout << now.count() << "\n";
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战
2020-05-25 读入、输出优化
2020-05-25 UVA - 12096 :The SetStack Computer