[hdu6578]Blank
状态f[i][j][k][l]表示前i个数,四种数的最后一次出现的位置分别是i、j、k和l(i>j>k>l),判断所有第右端点为i的区间是否满足此要求(不满足重置为0),考虑第i+1个位置填什么,转移到下一个位置上即可。
这样的时间复杂度看似是$o(Tn^{4})$,实际上由于枚举只需要比上一个数小就行了,还要除以24;空间复杂度通过滚动可以压到$o(n^{3})$,可以卡过去。
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define mod 998244353 4 int t,n,m,x,y,z,ans,ll[105][5],rr[105][5],f[2][105][105][105]; 5 void add(int &x,int y){ 6 x+=y; 7 if (x>=mod)x-=mod; 8 } 9 int calc(int a,int b,int c,int d,int e){ 10 return (e<=a)+(e<=b)+(e<=c)+(e<=d); 11 } 12 int main(){ 13 scanf("%d",&t); 14 while (t--){ 15 scanf("%d%d",&n,&m); 16 memset(ll,0x3f,sizeof(ll)); 17 memset(rr,-1,sizeof(rr)); 18 for(int i=1;i<=m;i++){ 19 scanf("%d%d%d",&x,&y,&z); 20 ll[y][z]=min(ll[y][z],x); 21 rr[y][z]=max(rr[y][z],x); 22 } 23 memset(f,0,sizeof(f)); 24 f[0][0][0][0]=1; 25 ans=0; 26 for(int i=1,p=1;i<=n;i++,p^=1){ 27 for(int j=0;(!j)||(j<i);j++) 28 for(int k=0;(!k)||(k<j);k++) 29 for(int l=0;(!l)||(l<k);l++){ 30 x=f[p^1][j][k][l]; 31 if (x){ 32 add(f[p][j][k][l],x); 33 add(f[p][i-1][k][l],x); 34 add(f[p][i-1][j][l],x); 35 add(f[p][i-1][j][k],x); 36 } 37 f[p^1][j][k][l]=0; 38 } 39 for(int j=0;j<i;j++) 40 for(int k=0;(!k)||(k<j);k++) 41 for(int l=0;(!l)||(l<k);l++){ 42 for(int q=1;q<=4;q++) 43 if ((calc(i,j,k,l,ll[i][q])>q)||(calc(i,j,k,l,rr[i][q])<q)){ 44 f[p][j][k][l]=0; 45 break; 46 } 47 if (i==n)add(ans,f[p][j][k][l]); 48 } 49 } 50 printf("%d\n",ans); 51 } 52 }
View Code
转载于:https://www.cnblogs.com/PYWBKTDA/p/11253923.html
[hdu6578]Blank相关推荐
- HDU-6578 Blank
HDU-6578 Blank 联想(口胡)(可跳过) 限制为几种不一样的数->存每个数最后出现的位置 又是一道神仙DP题.但如果思路正确还是挺简单的. 由于限制是限制一个区间有几个不同的数,所以 ...
- 2019多校第一场 HDU6578 - Blank(DP,思维,滚动数组优化空间)
链接:HDU6578 - Blank 题意: 有 n (≤100) 个格子,向其中填入 0.1.2.3 这4个数,但是有 m (≤100) 个限制 限制 l r x :表示 l ~ r 的格子内不同的 ...
- HDU6578——blank 动态规划
题目来源 HDU 6578 题意 总共有nnn个编号,每个编号可以填充一个数字,分别为{0,1,2,3}\{0,1,2,3\}{0,1,2,3}.有mmm个条件,每个条件组成为l,r,xl,r,xl, ...
- 2019HDU多校第一场 HDU6578 Blank
http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意:一排有N个空格.空格从左到右依次为1.2.-.N. 汤姆正在用{0,1,2,3}中的一个数字填充每个 ...
- HDU-6578 Blank(DP)2019暑假杭电多校第一场
题意:一行有n个空格编号1~n; 每一个空格中填入0,1,2,3中的一个数字.且满足m个限制l,r,x:满足在区间[l,r]正好有x种不同的数字. 有多少种方法可以填充空格以满足所有条件? 思路:dp ...
- 2019年杭电多校第一场 1001题blank(DP)HDU6578
2019年杭电多校第一场 1001题blank(DP)HDU6578 解决思路,开一个DP数组来存储0 1 2 3四个字符最后出现的位置,并且在DP中已经==排好序==. DP开四维,DP[i][j] ...
- 2019HDU多校第一场1001 BLANK (DP)(HDU6578)
2019HDU多校第一场1001 BLANK (DP) 题意:构造一个长度为n(n<=10)的序列,其中的值域为{0,1,2,3}存在m个限制条件,表示为 l r x意义为[L,R]区间里最多能 ...
- pandas使用fillna函数将dataframe中缺失值替换为空字符串(replace missing value with blank string in dataframe)
pandas使用fillna函数将dataframe中缺失值替换为空字符串(replace missing value with blank string in dataframe) 目录 panda ...
- Ruby的.nil? .empty? .blank? .present?区别
.nil? , .empty? .blank? .present?区别: .nil? 和 .empty? 是ruby的方法. .blank? 是rails的方法. .nil? 判断对象是否存在(nil ...
最新文章
- 面试官:private修饰的方法可以通过反射访问,那么private的意义是什么?
- java模拟数据库压测_java应用的优化【转】
- 2020-12-03 Python OpenCV: 图片的裁剪
- rt-thread怎么使用数码管_三菱FX PLC功能指令,怎么学?
- JAVA基本数据类型所占字节数是多少?
- axure树形表格_Axure教程:可增删改的树型结构
- 解决visual studio换行(回车键)不能代码补全问题
- MyBatis 批量插入与更新、核心配置文件 mybatis-config.xml
- mysql插入汉子1366_mysql 向列表中添加漢字錯誤 1366
- 微型计算机原理及应用 湖南大学,2015年微机原理及其应用-湖南大学.doc
- 暗组2007 专业版 V6.1 800MB超大容量!迅雷 BT下载
- 突发!阿里巴巴大调整
- 新遇到的问题 , 进程退出代码是 '0xffffffff'
- 大一上课设——贪吃蛇(链表 + easyx)
- 工作上遇到困难,你该怎样获得他人的支持和帮助?
- Mac运行已安装软件提示“XXX 已损坏,打不开。移到废纸篓/推出磁盘映像。”解决方法
- 企业微信聊天工具栏怎么开启?如何调整位置?
- 字节跳动二号人物——山西人张利东
- 腾讯潘安群:腾讯云金融级数据库TDSQL分析
- 桑榆之年,你将如何谢幕这一生?
热门文章
- word打开文件出错怎么办?
- STM32CubeMX学习笔记(44)——USB接口使用(HID按键)
- php修改头像怎么做,PHP - 点击更换头像
- 小程序为什么要办理ICP许可证
- CentOs网络管理:ifconfig家族,iproute家族及配置文件
- html ckplayer.swf,让KindEditor支持MP4视频(使用ckplayer播放器)
- Glyphs 2 for Mac(字体设计编辑软件)
- Kindle的使用体验
- Error:(1, 0) Plugin with id 'com.android.application' not found. a href=openFile:F:\AndroidCode\Ji
- ubuntu18.04 LORD 3DM-GX5-AHRS + ros驱动安装