[2019杭电多校第一场][hdu6578]Blank(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578
计数问题想到dp不过分吧...
dp[i][j][k][w]为第1-i位置中4个数最后一次出现的位置从大到小排列后为i>=j>=k>=w,但是会MLE,所以把i滚动掉。
但是这里有限制条件,把所有限制条件按右端点用vector存一下,然后处理到第i个位置时,枚举每个状态和限制条件,如果当前状态不满足则归0。
1 #include <algorithm> 2 #include<iostream> 3 #include <cstdio> 4 #include <vector> 5 #include <cstring> 6 using namespace std; 7 typedef long long ll; 8 const int maxn = 100 + 5; 9 const int mod = 998244353; 10 int n, m, ans; 11 int dp[2][maxn][maxn][maxn]; 12 vector <pair<int, int>> a[maxn]; 13 int main() { 14 int pos; 15 cin >> pos; 16 while (pos--) { 17 int ans = 0; 18 scanf("%d %d", &n, &m); 19 for (int i = 1; i <= n; i++) 20 a[i].clear(); 21 for (int i = 0; i < m; i++) { 22 int l, r, x; 23 scanf("%d%d%d", &l, &r, &x); 24 a[r].push_back(pair<int, int>(l, x)); 25 } 26 dp[0][0][0][0] = 1; 27 int now = 1; 28 for (int i = 1; i <= n; i++, now ^= 1) { 29 for (int j = 0; j <= i; j++) 30 for (int k = 0; k <= j; k++) 31 for (int t = 0; t <= k; t++) 32 dp[now][j][k][t] = 0; 33 for (int j = 0; j < i; j++) 34 for (int k = 0; k <= j; k++) 35 for (int t = 0; t <= k; t++) { 36 dp[now][j][k][t] = (dp[now ^ 1][j][k][t] + dp[now][j][k][t]) % mod; 37 dp[now][i - 1][k][t] = (dp[now ^ 1][j][k][t] + dp[now][i - 1][k][t]) % mod; 38 dp[now][i - 1][j][t] = (dp[now ^ 1][j][k][t] + dp[now][i - 1][j][t]) % mod; 39 dp[now][i - 1][j][k] = (dp[now ^ 1][j][k][t] + dp[now][i - 1][j][k]) % mod; 40 } 41 for (int j = 0; j < i; j++) 42 for (int k = 0; k <= j; k++) 43 for (int t = 0; t <= k; t++) 44 for (auto tmp : a[i]) 45 if (1 + (j >= tmp.first) + (k >= tmp.first) + (t >= tmp.first) != tmp.second) 46 dp[now][j][k][t] = 0; 47 } 48 now = n & 1; 49 for (int i = 0; i < n; i++) 50 for (int j = 0; j <= i; j++) 51 for (int k = 0; k <= j; k++) 52 ans = (ans + dp[now][i][j][k]) % mod; 53 printf("%d\n", ans); 54 } 55 56 }
View Code
转载于:https://www.cnblogs.com/sainsist/p/11304699.html
[2019杭电多校第一场][hdu6578]Blank(dp)相关推荐
- 2019杭电多校第一场 Operation HDU - 6579
题意:给出一个序列,两种操作,求区间[l,r]的区间最大异或和,和在末尾添加一个数 思路:强制在线,保存每个线性基的数值,接下去直接去搜第r个线性基,但要保持时间比l要大,新增了一个pos数组代表一个 ...
- 2019杭电多校第一场 HDU 6599
题解 枚举所有的回文串 注意,本质不同的回文串最多只有∣S∣|S|∣S∣个 在这些回文串中,有一些是满足要求的,我们对这些串打上标记 首先跑一个ManacherManacherManacher,然后枚 ...
- 2019年杭电多校第一场 1001题blank(DP)HDU6578
2019年杭电多校第一场 1001题blank(DP)HDU6578 解决思路,开一个DP数组来存储0 1 2 3四个字符最后出现的位置,并且在DP中已经==排好序==. DP开四维,DP[i][j] ...
- 2022“杭电杯”中国大学生算法设计超级联赛 (1) 杭电多校第一场 2 3 4 5 8 12
题目 1002 Dragon slayer 标程 1003 Backpack AC代码 1004 Ball AC代码 1008 Path AC代码 1009 Laser AC代码 1012 Alice ...
- 2019多校第一场 HDU6578 - Blank(DP,思维,滚动数组优化空间)
链接:HDU6578 - Blank 题意: 有 n (≤100) 个格子,向其中填入 0.1.2.3 这4个数,但是有 m (≤100) 个限制 限制 l r x :表示 l ~ r 的格子内不同的 ...
- HDU-6578 Blank(DP)2019暑假杭电多校第一场
题意:一行有n个空格编号1~n; 每一个空格中填入0,1,2,3中的一个数字.且满足m个限制l,r,x:满足在区间[l,r]正好有x种不同的数字. 有多少种方法可以填充空格以满足所有条件? 思路:dp ...
- 杭电多校第一场第三题 Backpack(异或dp+bitset)
问题描述 爱丽丝有一个容量背包m她现在想用一些物品填充! 爱丽丝有n项目,每个项目都有一个卷v我和值w我. 是否可以从n个项目中选择多个项目,以使背包完全装满(即体积的总和等于背包容量)?如果是这样, ...
- 2019杭电多校第二场1009 HDU6599:求本质不同的回文串长度及数量
hdu6599:求本质不同的回文串长度及数量 hdu6599题意: manacher+后缀自动机+倍增 $O(nlog(n))$ manacher+后缀数组+二分 $O(nlog(n))$ 回文树(回 ...
- 2019杭电多校第九场 Rikka with Cake (hdu6681)
题意:给出一个n * m的蛋糕,切 k 刀,每次从一个点(x,y)向 上下左右的一个方向切,问最后蛋糕被切成了几块 题解:显然,蛋糕的块数就是那么多线段的交点数 + 1.先离散,考虑向左切和向上切的, ...
- 2022 杭电多校 第一场
文章目录 1011 Random 1012 Alice and Bob 1003 Backpack 1002 Dragon slayer 1009 Laser 1011 Random 签到 求一下期望 ...
最新文章
- Android 自定义 —— View moveTo与 rMoveTo 的区别
- 混合云部署MySQL集群_数据库混合云解决方案
- CSU 1081集训队分组(搜索)
- 计算机网络 实验 使用端口完成地址转换,Wireshark抓包工具计算机网络实验解析...
- 无法获取 vmci 驱动程序版本: 句柄无效
- 64位windows系统如何显示32位dcom组件配置
- 数据预处理与数据分类预测
- 拼多多再添新瓜!15 岁上浙大、22 岁获世界冠军的天才黑客 Flanker 疑因拒绝违法攻击被强制开除...
- mysql数据库undo日志恢复_MySQL的undo/redo日志和binlog日志,以及2PC
- 开源同步文件软件对比
- 记一次跟二房东公司(非中介个人房源无中介费)租房的经历
- 鼠标双击桌面上的快捷方式出现打开本快捷方式属性,而不是打开文件的可能原因及解决方法参考...
- 残差分析(残差原理与标准化残差分析)
- 1-(2-甲氧基乙基)-3-乙基咪唑三氟甲基磺酸盐{[C22O1IM][TfO]}离子液体
- 华为python673集_[译] 使用 Python 的 Pandas 和 Seaborn 框架从 Kaggle 数据集中提取信息...
- 2021 Google 开发者大会进行时: 汇聚开发者合力,共建全球技术生态
- 粉条要经过什么检查才符合315?
- 1213:八皇后问题1700:八皇后问题
- 如何借助企业微信运营管理用户?
- HBase,phoenix
热门文章
- Delphi调用C#类库.doc
- 11行Python代码,盗取了室友的U盘内容
- 全球最厉害的14位程序员!你知道有哪几位?
- js先执行一个方法再往下执行_轻松理解JS中的面向对象,顺便搞懂prototype和__proto__...
- 01.redis初识
- 我所见过的最简短、最灵活的javascript日期转字符串工具函数
- spring init
- php 调试环境配置
- 强大的反编译软件Hopper Disassembler for Mac控制流程图详解
- 067、如何部署Calico网络 (2019-04-10 周三)