题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578

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

题解:f[i][j][k][cur]表示四个数最后出现的位置经过排序后为\(i,j,k,cur\)的方案数,暴力转移即可,其中最后一维需要滚动数组节省空间

   对于限制条件可以用vector存下来,每次循环对右端点为当前点的限制条件进行判断即可

   虽然要套四个\(for\),但是由于有顺序限制,所以执行次数大约为\(\frac{n^4}{24}\),加上本题的运算简单,常数较小,因此基本不会出现TLE的情况

   但是还是要吐槽一句出题人把这场比赛的时间设的好死啊...开个3s应该也不至于放假算法过吧orz

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define N 101
 4 #define mp make_pair
 5 #define MOD 998244353
 6 int T,n,m,l,r,x,f[N][N][N][2],ans;
 7 vector<pair<int,int>>d[N];
 8 void init()
 9 {
10     ans=0;
11     scanf("%d%d",&n,&m);
12     for(int i=1;i<=n;i++)
13       {
14       d[i].clear();
15       d[i].push_back(mp(i,1));
16       }
17     for(int i=1;i<=m;i++)
18       {
19       scanf("%d%d%d",&l,&r,&x);
20       d[r].push_back(mp(l,x));
21       }
22     memset(f,0,sizeof(f));
23     f[0][0][0][0]=1;
24     for(int cur=1;cur<=n;cur++)
25       {
26       int o=cur&1;
27       for(int i=0;i<=cur;i++)
28         for(int j=i;j<=cur;j++)
29           for(int k=j;k<=cur;k++)
30             f[i][j][k][o]=0;
31       for(int i=0;i<=cur;i++)
32         for(int j=i;j<=cur;j++)
33           for(int k=j;k<=cur;k++)
34             {
35             (f[j][k][cur-1][o]+=f[i][j][k][o^1])%=MOD;
36             (f[i][k][cur-1][o]+=f[i][j][k][o^1])%=MOD;
37             (f[i][j][cur-1][o]+=f[i][j][k][o^1])%=MOD;
38             (f[i][j][k][o]+=f[i][j][k][o^1])%=MOD;
39             }
40       for(int i=0;i<=cur;i++)
41         for(int j=i;j<=cur;j++)
42           for(int k=j;k<=cur;k++)
43             for(auto pi:d[cur])
44               {
45               l=pi.first,r=cur,x=pi.second;
46               if((i>=l)+(j>=l)+(k>=l)+(cur>=l)!=x)
47                 f[i][j][k][o]=0;
48               }
49       }
50     for(int i=0;i<=n;i++)
51       for(int j=i;j<=n;j++)
52         for(int k=j;k<=n;k++)
53           (ans+=f[i][j][k][n&1])%=MOD;
54     printf("%d\n",ans);
55 }
56 int main()
57 {
58     scanf("%d",&T);
59     while(T--)init();
60 }

View Code

代码中对vector的初始化其实是没必要额外push_back的,写的时候为了保险就加上去了(虽然差点导致TLE)

这竟然是我博客里的第一道纯DP题...?

转载于:https://www.cnblogs.com/DeaphetS/p/11229389.html

[2019HDU多校第一场][HDU 6578][A. Blank]相关推荐

  1. [2019HDU多校第一场][HDU 6590][M. Code]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6590 题目大意(来自队友):二维平面上有\(n\)个点,每个点要么是黑色要么是白色,问能否找到一条直线 ...

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

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

  3. 2019HDU多校第一场 HDU6578 Blank

    http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意:一排有N个空格.空格从左到右依次为1.2.-.N. 汤姆正在用{0,1,2,3}中的一个数字填充每个 ...

  4. 2019杭电多校第一场 HDU 6599

    题解 枚举所有的回文串 注意,本质不同的回文串最多只有∣S∣|S|∣S∣个 在这些回文串中,有一些是满足要求的,我们对这些串打上标记 首先跑一个ManacherManacherManacher,然后枚 ...

  5. 2019hdu多校第一场H Desert [多项式计数] [仙人掌计数]

    首先注意到n个点的仙人掌其实和n个圆点的圆方树是等价的,那么转化为求圆方树的统计会简单一点. 圆方树要满足的性质有以下几条: 1.奇数层为圆点,偶数层为方点,即只存在圆点和方点连的边. 2.圆点下的子 ...

  6. 2019牛客多校第一场

    2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...

  7. 2019年杭电多校第一场 1001题blank(DP)HDU6578

    2019年杭电多校第一场 1001题blank(DP)HDU6578 解决思路,开一个DP数组来存储0 1 2 3四个字符最后出现的位置,并且在DP中已经==排好序==. DP开四维,DP[i][j] ...

  8. python字符串去重及排序 牛客_2018牛客多校第一场 D.Two Graphs

    题意: n个点,m1条边的图E1,n个点,m2条边的图E2.求图E2有多少子图跟图E1同构. 题解: 用STL的全排列函数next_permutation()枚举映射.对于每一种映射枚举每一条边判断合 ...

  9. 2020 牛客多校第一场

    2020 牛客多校第一场 A. B-Suffix Array 后缀数组的思想:倍增+桶排序的方式找出一串连续序列后缀的大小.虽说正常使用的时候都是字典序,但是只要修改排序方式,也能够达到一个类似的&q ...

最新文章

  1. Ansible自动化运维基础-------ploybook
  2. 数据脱敏的 6 种方案
  3. C语言将两个数字相加,然后将和作为链接列表返回(附完整源码)
  4. CodeForces - 1323B Count Subrectangles(思维)
  5. 判断sem信号量为零_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...
  6. linux oracle流复制,oracle 流复制
  7. python3 装饰器_python3_装饰器_异常处理
  8. firefox扩展开发(八) :控件激活
  9. 如何深入的学习好CSS?
  10. 多表查询过滤重复数据_数据分析工具SQL—多表查询
  11. 新手php环境一键安装包,PHP运行环境一键安装包(phpStudy2013)
  12. H5+CSS 实现前面带搜索图标的搜索框
  13. 电音制作收割者宿主软件-Cockos REAPER v6.15 x86 x64 WiN
  14. SecureCRT无法键盘输入,无法回车
  15. Python个人快速入门学习(九)jieba库的使用
  16. PHP微信固码免签系统源码+带监控APP和教程
  17. 几行代码爬取喜马拉雅音乐
  18. 设计模式第10式:状态模式
  19. 网站快速排名百度首页搜索前十名
  20. 国家测绘局公布2007年十大测绘违法典型案件(转)

热门文章

  1. 百度贴吧五年内流失九成用户;罗永浩吐槽苹果新品:更丑更贵更胡来;进互联网大厂毕业生5年后7成人离开 | EA周报...
  2. 一键调用API,聚合数据API服务助力企业应用创新
  3. KJ分析法(亲和图)的应用实例及知识分享
  4. 第5章 LinearR/PLR/SVR/KNN/DTR/RFR(测算房价)
  5. 余弦s=Acos(wt+φ)
  6. PP实施经验分享(9)——SAP中Day’s supplyReceipt day’s supply及相关报表(可当物料短缺报表使用)
  7. 天津大学计算机专硕_天津大学计算机技术专硕考研参考书
  8. Tensorflow2 图像分类-Flowers数据及分类代码详解
  9. 360应用宝上架流程及所需材料
  10. Swin-Transformer网络结构详解