大意: 长为$n$的数组, 每个位置范围$[0,3]$, $m$个限制$(l,r,x)$表示$[l,r]$内有$x$种数, 求方案数.

维护每个数字最后一次出现位置, 暴力$DP$

实现时有个技巧是把还没有选择的数位置设为$0$

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <queue>
  4. #define REP(i,a,n) for(int i=a;i<=n;++i)
  5. #define PER(i,a,n) for(int i=n;i>=a;--i)
  6. using namespace std;
  7. typedef long long ll;
  8. typedef pair<int,int> pii;
  9. const int N = 110, P = 998244353;
  10. int n, m;
  11. vector<pii> f[N];
  12. int dp[N][N][N][N];
  13. void add(int &x, int y) {x+=y;if (x>=P)x-=P;}
  14. int main() {
  15. int t;
  16. cin>>t;
  17. while (t--) {
  18. cin>>n>>m;
  19. REP(i,1,n) f[i].clear();
  20. while (m--) {
  21. int l,r,x;
  22. cin>>l>>r>>x;
  23. f[r].pb(pii(l,x));
  24. }
  25. int cur = 0, ans = 0;
  26. dp[0][0][0][0] = 1;
  27. REP(i,1,n) {
  28. cur ^= 1;
  29. REP(j,0,i) REP(k,0,j) REP(t,0,k) dp[cur][j][k][t]=0;
  30. REP(j,0,i-1) REP(k,0,j) REP(t,0,k) {
  31. int &r = dp[!cur][j][k][t];
  32. if (!r) continue;
  33. add(dp[cur][j][k][t],r);
  34. add(dp[cur][i-1][j][k],r);
  35. add(dp[cur][i-1][j][t],r);
  36. add(dp[cur][i-1][k][t],r);
  37. }
  38. REP(j,0,i-1) REP(k,0,j) REP(t,0,k) {
  39. for (auto u:f[i]) {
  40. if (1+(j>=u.x)+(k>=u.x)+(t>=u.x)!=u.y) {
  41. dp[cur][j][k][t] = 0;
  42. }
  43. }
  44. if (i==n) add(ans,dp[cur][j][k][t]);
  45. }
  46. }
  47. printf("%d\n", ans);
  48. }
  49. }

2019杭电多校一 A. Blank (dp)的更多相关文章

  1. 2019杭电多校一 C. Milk (dp)

    大意: $n*m$棋盘, 初始位置$(1,1)$, 横坐标为$\frac{m+1}{2}$时可以向下走, 否则只能左右走, 每走一步花费$1$秒. 有$k$管奶, 第$i$罐位置$(r_i,c_i)$ ...

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

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

  3. 2019杭电多校&CCPC网络赛&大一总结

    多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...

  4. 2019杭电多校第一场hdu6581 Vacation

    Vacation 题目传送门 update(O(n)) 看了那个O(n)的方法,感觉自己想的那个O(nlogn)的好傻,awsl. 0车最终通过停车线的时候,状态一定是某个车堵住后面的所有车(这个车也 ...

  5. 2019杭电多校第二场hdu6601 Keen On Everything But Triangle

    Keen On Everything But Triangle 题目传送门 解题思路 利用主席树求区间第k小,先求区间内最大的值,再求第二大,第三大--直到找到连续的三个数可以构成一个三角形.因为对于 ...

  6. 2019杭电多校第二场hdu6602 Longest Subarray(线段树)

    Longest Subarray 题目传送门 解题思路 本题求一个最大的子区间,满足区间内的数字要么出现次数大于等于k次,要么没出现过.给定区间内的数字范围是1~c. 如果r为右边界,对于一种数字x, ...

  7. Rikka with Game[技巧]----2019 杭电多校第九场:1005

      Rikka with Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Othe ...

  8. 2019杭电多校 hdu6662 Acesrc and Travel (树形dp

    http://acm.hdu.edu.cn/showproblem.php?pid=6662 题意:有两个人在树上博弈,每个点节点有两个分数a[i]和b[i],先手先选择一个点,后手在先手选的点的相邻 ...

  9. 2019杭电多校 hdu6659 Acesrc and Good Numbers

    http://acm.hdu.edu.cn/showproblem.php?pid=6659 题意:给你d,x,让求满足f(d,n)=n的最大n(n<=x),其中f(d,n)表示数字d在从1到n ...

随机推荐

  1. PHP fopen/file_get_contents与curl性能比较

    PHP中fopen,file_get_contents,curl 函数的区别: 1.fopen/file_get_contents 每次请求都会重新做 DNS 查询,并不对 DNS 信息进行缓存. 但 ...

  2. Linux 基于WEB开源的系统管理工具webmin

    Webmin是目前功能最强大的基于Web的Unix系统管理工具.管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作.目前Webmin支持绝大多数的Unix系统,这些系统除了各种版本的l ...

  3. Ionic4.x 项目结构简单分析

    新建项目 e2e:端对端测试文件 node_modules :项目所需要的依赖包 resources :android/ios 资源(更换图标和启动动画) src:开发工作目录,页面.样式.脚本和图片 ...

  4. Time类

    public class Demo_Timer { /** * @param args * 计时器 * @throws InterruptedException */ public static vo ...

  5. java如何获取项目的工作目录

    package maptoxml; public class Tfff { public static void main(String[] args) { System.out.println(&q ...

  6. 利用Python获取cookie的方法,相比java代码简便不少

    1.通过urllib库,是python的标准库,不需要另外引入,直接看代码,注意代码的缩进: # coding=UTF-8import cookielibimport urllib2 class Ry ...

  7. markdown 测试博客发布

    这是一个测试页面 无序列表 tet test 有序列表 特使团 tetst 引用 This is a test 插入图片 插入链接 baidu 粗体 这是粗体 斜体 这是斜体 表格 IP VIP 备注 ...

  8. PAT 甲级 1063 Set Similarity (25 分) (新学,set的使用,printf 输出%,要%%)

    1063 Set Similarity (25 分)   Given two sets of integers, the similarity of the sets is defined to be ...

  9. PAT 甲级 1034 Head of a Gang (30 分)(bfs,map,强连通)

    1034 Head of a Gang (30 分)   One way that the police finds the head of a gang is to check people's p ...

  10. JQ操作select项

    jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change(function(){//code...});   //为Se ...