题目大意:长度为n的数组要求分别填入0到3四个数中的任意一个,有m个限制条件:区间[l,r]中出现的数字种数恰好为x,求方案数。

记录4种数字最后出现的位置在限制条件下的方案数(及时清零)然后DP。
发现具体是那种数字不重要,于是记录4种数字从后到前最后出现的位置就可以让状态数÷4!\div 4!÷4!
然后O(n4T)O(n^4T)O(n4T)的奇妙卡常就能过了。

AC Code:

#include<bits/stdc++.h>
#define maxn 105
#define mod 998244353
#define inf 0x3f3f3f3f
using namespace std;int n,m,f[2][maxn][maxn][maxn],l[2][maxn][5];
bool check(int a,int b,int c,int d,int e){if(l[1][e][1] < inf && b>=l[1][e][1]) return 0;if((l[1][e][2] < inf && c>=l[1][e][2]) || (l[0][e][2] > -1 && b<l[0][e][2])) return 0;if((l[1][e][3] < inf && d>=l[1][e][3]) || (l[0][e][3] > -1 && c<l[0][e][3])) return 0;if((l[0][e][4] > -1 && d < l[0][e][4])) return 0;return 1;
}int sol(int a){return a>=mod?a-mod:a; }int main(){//   freopen("1.in","r",stdin);int T;scanf("%d",&T);for(;T--;){scanf("%d%d",&n,&m);memset(l[0],-1,sizeof l[0]);memset(l[1],0x3f,sizeof l[1]);for(int i=1;i<=m;i++){int L,R,x;scanf("%d%d%d",&L,&R,&x);l[0][R][x] = max(l[0][R][x] , L);l[1][R][x] = min(l[1][R][x] , L);}int now = 1 , pre = 0;memset(f,0,sizeof f);f[pre][0][0][0] = 1;for(int a=1;a<=n;a++,swap(now,pre)){for(int a1=0;a1<max(a-1,1);a1++)for(int a2=0;a2<max(a1,1);a2++)for(int a3=0;a3<max(a2,1);a3++)if(f[pre][a1][a2][a3]){//if(check(a,a1,a2,a3,a)) f[now][a1][a2][a3] = sol(f[now][a1][a2][a3] + f[pre][a1][a2][a3]);//if(check(a,a-1,a2,a3,a)) f[now][a-1][a2][a3] = sol(f[now][a-1][a2][a3] + f[pre][a1][a2][a3]);//if(check(a,a-1,a1,a3,a)) f[now][a-1][a1][a3] = sol(f[now][a-1][a1][a3] + f[pre][a1][a2][a3]);//if(check(a,a-1,a1,a2,a)) f[now][a-1][a1][a2] = sol(f[now][a-1][a1][a2] + f[pre][a1][a2][a3]);f[pre][a1][a2][a3] = 0;}for(int a1=0;a1<a;a1++)for(int a2=0;a2<max(a1,1);a2++)for(int a3=0;a3<max(a2,1);a3++)if(!check(a,a1,a2,a3,a))f[now][a1][a2][a3] = 0;}int ans = 0;for(int a1=0;a1<max(n,1);a1++)for(int a2=0;a2<max(a1,1);a2++)for(int a3=0;a3<max(a2,1);a3++)    ans = sol(ans + f[pre][a1][a2][a3]);printf("%d\n",(ans+mod)%mod);}
}

HDU 6578 Blank相关推荐

  1. HDU - 6578 Blank DP + 滚动数组

    HDU - 6578 Blank 题意 给你\(\{0,1,2, 3\}\)四个数,分别填入长度为\(n\)的数列中,有\(m\)个限制条件,\(l_{i}, r_{i}, x_{i}\)表示在\([ ...

  2. HDU 6578. Blank (DP)

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: N个位置,M个限制条件: 每个位置填入{0,1,2,3}中的一个数: 每个限制条件(L,R ...

  3. hdu 6578 Blank dp求 给定区间中数字不同的方案数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: 给你n个空的数列位置和k条限制,要你用0 1 2 3四个数字,每条限制由l r x组成, ...

  4. HDU - 6578 Blank dp

    Blank dp[ o ][ i ][ j ][ k ] 表示前 o 个已经填完, 不同数字的最后一个分别在o, i, j, k, 直接dp, 把限制丢到R, 在R转移出去的时候把不合法的丢掉. #p ...

  5. hdu 6578 Blank dp

    题意 n个格子排成一行,每个格子可以涂四种颜色. 给m个形如(l,r,x)的限制,表示l到r格子内恰好有x种颜色 问满足所有限制的涂色方法有多少种 n<=100,m<=100 做法 dp, ...

  6. HDU 6578 Blank 区间dp

    题意:构造一个长度为n的子串,要求在m个区间内,在[ li , ri ]保证要有x个不同的数. 题解:我们设dp[t][i][j][k],代表{ 0 ,1,2,3 }四个数最后一次出现的位置.且保证( ...

  7. [2019HDU多校第一场][HDU 6578][A. Blank]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题目大意:长度为\(n\)的数组要求分别填入\(\{0,1,2,3\}\)四个数中的任意一个,有 ...

  8. HDU6578——blank 动态规划

    题目来源 HDU 6578 题意 总共有nnn个编号,每个编号可以填充一个数字,分别为{0,1,2,3}\{0,1,2,3\}{0,1,2,3}.有mmm个条件,每个条件组成为l,r,xl,r,xl, ...

  9. HDU 2019 Multi-University Training Contest 1 杭电2019多校联合训练赛 第一场 1001 Blank (6578)

    HDU 2019 Multi-University Training Contest 1 杭电2019暑期多校集训第一场 1001 Blank (6578) Problem Description T ...

最新文章

  1. flutter图片识别_Flutter 资源和图片
  2. idea在目录中前添加目录_[LaTeX Beamer] 为目录项添加页码
  3. PGM:不完备数据的参数估计
  4. 遇到的问题:uboot下,关闭串口前需要printf打印一个“UART BUS OFF!!!”提示信息,但是打印不出来
  5. MESI protocol digram
  6. 大数据与个人隐私的平衡:懂你,但不认识你
  7. oracle分区缺点,ORACLE的五种表的优缺点概述
  8. excel填充序列_猴哥讲述:excel的自动填充功能——自动填充单元格
  9. vue端口号被占用报错npm ERR! @1.0.0 dev: `node build/dev-server.js`
  10. python中赋值语句和判断语句结合_Python 3 学习的第二小节——判断赋值语句与简单循环...
  11. STM32 hal库串口空闲中断最新用法
  12. MySQL查询(DQL)之基础查询+条件查询+排序查询
  13. Chrome屏蔽Adobe Flash Player 插件的问题
  14. 当易方达张坤遇招商白酒侯昊
  15. matlab 矩阵命令,matlab矩阵运算命令
  16. 一个Bug案例的解决过程:连续输入错误的PIN码,不能实现第二次倒计时30s才能重试
  17. java 文件保存_java中怎么实现保存文件到本地
  18. 【汇正财经】什么是红筹股?
  19. B站视频之CC字幕抓取
  20. 2020年最新前端框架大全,Web工程师人手一份

热门文章

  1. VS2017中处理命令行参数的方法----C++语言 Windows系统
  2. Differentiable Scaffolding Tree for Molecule Optimization(论文解读)
  3. 关于人际关系的一些问答
  4. [生存志] 第78节 左传汇总春秋大事
  5. [原创]Xilinx工具关联UEStudio
  6. IDM All Products全系列破解UltraEditUltraCompareUEStudioUltraFTPUltraFinder全部最新版产品破解补丁及注册机补丁破解
  7. SAP权限管理的基本概念
  8. c++中 int、long、long long等取值范围
  9. html中圆角的度,cssli圆角
  10. iOS直播app原理