状态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 }

[hdu6578]Blank的更多相关文章

  1. [2019杭电多校第一场][hdu6578]Blank(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 计数问题想到dp不过分吧... dp[i][j][k][w]为第1-i位置中4个数最后一次出现的 ...

  2. 2019HDU多校第一场1001 BLANK (DP)(HDU6578)

    2019HDU多校第一场1001 BLANK (DP) 题意:构造一个长度为n(n<=10)的序列,其中的值域为{0,1,2,3}存在m个限制条件,表示为 l r x意义为[L,R]区间里最多能 ...

  3. Rails :.nil? , .empty?, .blank? .present? 的区别

    .nil? , .empty?, .blank? .present? 的区别 首先这三个都是判空的. 而 .nil? 和 .empty? 是ruby的方法. .blank? 是rails的方法 .ni ...

  4. ruby : nil?, empty? and blank?的选择

    article = nil article.nil? # => true empty? checks if an element - like a string or an array f.e. ...

  5. git错误:Target branch can't be blank

    一.问题描述 遇到一个问题:Target branch can't be blank 因为问题再没有重现,所以拿一张网上的图: 情况是,比如a是项目的owner,有一个项目a/Project. b从a ...

  6. ruby -- 基础学习(五)empty、nil、blank三者之间的区别

    这三个方法在ROR中经常用到,都是用来判断是否为空的. 区别是: ruby的方法:.nil?..empty? rails的方法 :.blank? 用法的区别: .nil?    :   判断对象是否存 ...

  7. django字段设置null和blank的区别

    null 这个选项跟数据库有关. null=True的话,数据库中该字段是NULL,即允许空值:null=False(默认)的话,数据库中该字段是NOT NULL,即不允许空值. blank 这个选项 ...

  8. [转]ConsumeContainerWhitespace property to remove blank space in SSRS 2008 report

    转自:http://beyondrelational.com/modules/2/blogs/115/posts/11153/consumecontainerwhitespace-property-t ...

  9. Java中的blank final

    Java allows the creation of blank finals, which are fields that are declared as final but are not gi ...

随机推荐

  1. caffe运行错误 target_blobs.blobs_size()与 source_layer.blobs_size() 不一致

    解决方法参考:http://blog.csdn.net/zhangla1220/article/details/50697352 感谢博主!!! 最新下载的caffe代码,运行mnist,训练时可以正 ...

  2. springcloud组件之hystrix服务熔断,降级,限流

    hystrix 简介 Hystrix是什么 在分布式环境中,许多服务依赖项中的一些必然会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互.Hystrix通过 ...

  3. NOIP模拟76

    前言 还有不到 10 天就要 CSP-S ...马上我就要有我的第一篇游记了. 今天考试莽了一回,整了大概 2.5h 的 T1 ,可能是因为今天题目比较难,看起来成效不错. 以后还是要注意时间的分配( ...

  4. 洛谷4366——最短路(dijkstra,思维,异或)

    题目大意 给定一个n个点,m条边的图,每条边有边权,而每个点\(i\)也可以直接到达\(j\),代价是\(i\ xor\ j\),给定一个S和T,求S到T的最小代价 其中\(n\le100000,m\ ...

  5. hdu3001(三进制状压)

    题目大意: 现在给你一个有n个点和m条边的图,每一条边都有一个费用,每个点不能经过超过两次,求所有点至少遍历一次的最小费用 其中n<=10 m没有明确限制(肯定不会超过1e5) 一看到这个数据范 ...

  6. docker环境下搭建python3.6

    前言:当我们在一台电脑上搭建了python3.6的环境,下次换了个电脑或者换成linux的系统了又得重新搭建一次,设置环境变量,下载pip等操作.所以使用docker 一.安装python步骤: 1. ...

  7. 【UE4 设计模式】状态模式 State Pattern

    概述 描述 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类. 其别名为状态对象(Objects for States),状态模式是一种对象行为型模式. 有限状态机(FSMs) ...

  8. 【数据结构与算法Python版学习笔记】树——利用二叉堆实现优先级队列

    概念 队列有一个重要的变体,叫作优先级队列. 和队列一样,优先级队列从头部移除元素,不过元素的逻辑顺序是由优先级决定的. 优先级最高的元素在最前,优先级最低的元素在最后. 实现优先级队列的经典方法是使 ...

  9. 腾讯bugly产生bug定位行数不准解决方案

    定位不准是因为做了混淆导致行数与实际代码行数不对.解决方案是要上传符号表.下载地址https://bugly.qq.com/v2/downloads 下载好因为我打开文件的说明文件是空文件(可能工作人 ...

  10. [no_code][Beta]事后分析

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们要解决的目前的手写表单的电子化问题,办公电子化问题的一个key问题.定义十分清楚: 输入: 手写表单 ...