Bitset优化Dp

题目链接

一般DP做法

显然后面的数是与前面的数字相关的,所以我们有dp数组,dp[i][j]dp[i][j]dp[i][j]选取了jjj个数,iii是否可以被创造出来,如果可以其值为1,否则为0。

所以我们显然有如下的状态转移方程:

n = read();dp[0][0] = 1;//初始化,一开始dp[0][0]就是是满足条件的。for(int i = 1; i <= n; i++) {l = read(), r = read();for(int j = l; j <= r; j++) {for(int k = 0; k + j * j < N; k++)dp[k + j * j][i] |= dp[k][i - 1];//开始暴力dp。}}int ans = 0;for(int i = 0; i < N; i++) if(dp[i][n]) ans++;

简单分析一下复杂度100∗100∗1000000100 * 100 * 1000000100∗100∗1000000显然tletletle,所以我们可以考虑用bitsetbitsetbitset来表示dp,这样可以达到常数级别的状态转移。

Bitset AC代码

这里的关系只有两个相邻的数组间进行转换,可以考虑更为高效的滚动数组进行空间优化处理。

/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define endl '\n'using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;const double pi = acos(-1.0);
const double eps = 1e-7;
const int inf = 0x3f3f3f3f;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-')    f = -1;c = getchar();}while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x;
}void print(ll x) {if(x < 10) {putchar(x + 48);return ;}print(x / 10);putchar(x % 10 + 48);
}const int N = 1000005;// int dp[N][110], n, l, r;bitset<N> dp[110];int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);// n = read();// dp[0][0] = 1;// for(int i = 1; i <= n; i++) {//   l = read(), r = read();//   for(int j = l; j <= r; j++) {//     for(int k = 0; k + j * j < N; k++)//       dp[k + j * j][i] |= dp[k][i - 1];//   }// }// int ans = 0;// for(int i = 0; i < N; i++) if(dp[i][n]) ans++;// printf("%d\n", ans);int n = read();dp[0].set(0);for(int i = 1; i <= n; i++) {int l = read(), r = read();for(int j = l; j <= r; j++)dp[i] |= dp[i - 1] << j * j;}printf("%d\n", dp[n].count());return 0;
}

C 简单瞎搞题(牛客练习赛22)(bitset优化dp)相关推荐

  1. 简单瞎搞题 动态规划的优化

    链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值. 设 S=∑xi2S = \sum{{x_ ...

  2. 牛客练习赛22C Bitset

    牛客练习赛22C 一共有 n个数,第 i 个数是 xi  xi 可以取 [li , ri] 中任意的一个值. 设 ,求 S 种类数. 感觉二进制真是一个神奇的东西. #include <iost ...

  3. 刷题记录:牛客NC17193简单瞎搞题

    传送门;牛客 题目描述: 一共有 n个数,第 i 个数是 xi xi 可以取 [ l i , r i ] [li , ri] [li,ri] 中任意的一个值. 设 S = ∑ x i 2 S = \s ...

  4. 牛客网 【每日一题】5月20日题目 简单瞎搞题

    比赛链接 文章目录 题目描述 题解: 代码: 题目描述 输入描述: 第一行一个数 n. 然后 n 行,每行两个数表示 li,ri. 输出描述: 输出一行一个数表示答案. 示例1 输入 5 1 2 2 ...

  5. 简单瞎搞题(简单dp)

    链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值. 设 S=∑xi^​2,求 S 种类数. ...

  6. 解题报告:简单瞎搞题(bitset的应用)

    题目链接:https://ac.nowcoder.com/acm/contest/5556/E 输入 5 1 2 2 3 3 4 4 5 5 6 输出 26 备注: 1≤n,li,ri≤1001 ≤ ...

  7. 牛客练习赛22 E 树状数组 + DFS + 拓展欧几里德定理

    题目链接 题意: 给定一个长度为nnn的序列,进行mmm次操作,操作有两类: 111 LLL RRR vvv : 区间[L,R][L, R][L,R]的每个数加上vvv 222 LLL RRR ppp ...

  8. 牛客 - Strange Bulbs(bitset优化拓扑)

    题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的有向无环图,每个节点都有一个开关和一个灯泡,初始时节点 1 的灯泡是亮的,每次操作开关可以将当前灯泡的状态置反,且会对子节点的开关产生 ...

  9. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. 4年级计算机 设计贺卡教案,四年级上册信息技术《小贝的贺卡》教学设计
  2. CloudStack的基本使用
  3. plc模拟器软件_关于PLC虚拟化的思考当下及未来
  4. 【瞎扯】 About Me
  5. 源码分析参考:Dupefilter
  6. Mr.J-- jQuery学习笔记(十二)--移入移出事件电影排行榜小demo
  7. enq: TT - contention等待事件
  8. 深度学习和OpenCV-python读书笔记一(DNN介绍)
  9. C++循环的内存释放问题?
  10. 使用Sqlite数据库存储数据
  11. 用友NC6x单点登录实现——跳转到浏览器或Uclient
  12. 【蓝牙】什么?还不知道蓝牙协议栈开源了?
  13. React脚手架搭建及创建React项目
  14. 计算机辅助设计cad实训总结,CAD上机实验报告.doc
  15. 数据库基础知识(1)--数据库php连接
  16. python抢红包程序算法,Python 抢红包算法模拟
  17. ZooKeeper Commands: The Four Letter Words
  18. 微信小程序云开发之云函数使用
  19. oracle virtual directory c,Oracle VirtualBox 问题解决案例
  20. elementUI table表头添加下拉框等其他组件

热门文章

  1. python运行时间过长怎么优化_Python性能优化的20条建议
  2. python画相关性可视化图_Python可视化很简单,一文教你绘制饼图、极线图和气泡图...
  3. 震惊整个世界的新发现,科学界的大骗局
  4. 借助TensorFlow框架,到底能做什么?
  5. 用java写注册表单_利用HTML表单标签编写一个注册页面
  6. java程序编六角星_跨平台移动端解决方案—Weex
  7. mysql双机互备linux成功的_配置MySQL双机热备 - Linux服务器MySQL双机热备份试验_数据库技术_Linux公社-Linux系统门户网站...
  8. linux expr格式,计算2-expr命令举例
  9. 凝思系统改时间_国产操作系统往事:四十年激变,终再起风云
  10. html5 获取文件属性,H5新属性--file文件读取