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

计数问题想到dp不过分吧...

dp[i][j][k][w]为第1-i位置中4个数最后一次出现的位置从大到小排列后为i>=j>=k>=w,但是会MLE,所以把i滚动掉。

但是这里有限制条件,把所有限制条件按右端点用vector存一下,然后处理到第i个位置时,枚举每个状态和限制条件,如果当前状态不满足则归0。

 #include <algorithm>
#include<iostream>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int mod = ;
int n, m, ans;
int dp[][maxn][maxn][maxn];
vector <pair<int, int>> a[maxn];
int main() {
int pos;
cin >> pos;
while (pos--) {
int ans = ;
scanf("%d %d", &n, &m);
for (int i = ; i <= n; i++)
a[i].clear();
for (int i = ; i < m; i++) {
int l, r, x;
scanf("%d%d%d", &l, &r, &x);
a[r].push_back(pair<int, int>(l, x));
}
dp[][][][] = ;
int now = ;
for (int i = ; i <= n; i++, now ^= ) {
for (int j = ; j <= i; j++)
for (int k = ; k <= j; k++)
for (int t = ; t <= k; t++)
dp[now][j][k][t] = ;
for (int j = ; j < i; j++)
for (int k = ; k <= j; k++)
for (int t = ; t <= k; t++) {
dp[now][j][k][t] = (dp[now ^ ][j][k][t] + dp[now][j][k][t]) % mod;
dp[now][i - ][k][t] = (dp[now ^ ][j][k][t] + dp[now][i - ][k][t]) % mod;
dp[now][i - ][j][t] = (dp[now ^ ][j][k][t] + dp[now][i - ][j][t]) % mod;
dp[now][i - ][j][k] = (dp[now ^ ][j][k][t] + dp[now][i - ][j][k]) % mod;
}
for (int j = ; j < i; j++)
for (int k = ; k <= j; k++)
for (int t = ; t <= k; t++)
for (auto tmp : a[i])
if ( + (j >= tmp.first) + (k >= tmp.first) + (t >= tmp.first) != tmp.second)
dp[now][j][k][t] = ;
}
now = n & ;
for (int i = ; i < n; i++)
for (int j = ; j <= i; j++)
for (int k = ; k <= j; k++)
ans = (ans + dp[now][i][j][k]) % mod;
printf("%d\n", ans);
} }

[2019杭电多校第一场][hdu6578]Blank(dp)的更多相关文章

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

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

  2. [2019杭电多校第一场][hdu6582]Path(最短路&&最小割)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6582 题意:删掉边使得1到n的最短路改变,删掉边的代价为该边的边权.求最小代价. 比赛时一片浆糊,赛后 ...

  3. [2019杭电多校第一场][hdu6583]Typewriter(后缀自动机&&dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6583 大致题意是说可以花费p在字符串后添加一个任意字符,或者花费q在字符串后添加一个当前字符串的子串. ...

  4. [2019杭电多校第一场][hdu6579]Operation(线性基)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题目大意是两个操作,1个是求[l,r]区间子序列的最大异或和,另一个是在最后面添加一个数. 如果 ...

  5. 2019杭电多校第一场hdu6579 Operation(线性基)

    Operation 题目传送门 解题思路 把右边的数尽量往高位放,构造线性基的时候同时记录其在原序列中的位置,在可以插入的时候如果那个位置上存在的数字的位置比新放入的要小,就把旧的往后挤.用这种发现构 ...

  6. 2018 Multi-University Training Contest 1 杭电多校第一场

    抱着可能杭电的多校1比牛客的多校1更恐怖的想法 看到三道签到题 幸福的都快哭出来了好吗 1001  Maximum Multiple(hdoj 6298) 链接:http://acm.hdu.edu. ...

  7. 2019年杭电多校第一场 1009题String(HDU6586+模拟+单调栈)

    题目链接 传送门 题意 给你一个字符串,要你构造一个长为\(k\)的子串使得每个字母出现的次数在\([L_i,R_i](0\leq i\leq26)\)间且字典序最小. 思路 做这种题目就是要保持思路 ...

  8. 2019年杭电多校第一场 1004题Vacation(HDU6581+数学)

    题目链接 传送门 题意 有\(n+1\)辆车要过红绿灯,告诉你车的长度.与红绿灯的起点(题目假设红绿灯始终为绿).车的最大速度,问你第\(0\)辆车(距离最远)车头到达红绿灯起点的时间是多少(每辆车最 ...

  9. 2019年杭电多校第一场 1002题Operation(HDU6579+线性基)

    题目链接 传送门 题意 初始时有\(n\)个数,现在有\(q\)次操作: 查询\([l,r]\)内选择一些数使得异或和最大: 在末尾加入一个数. 题目强制在线. 思路 对于\(i\)我们记录\([1, ...

随机推荐

  1. vue-jwt 实战

    作用:把用户的信息储存到客户端 每次客户端带上token 校验是否登陆过 1.使用主要有两个api jwt.sign(payload, secretOrPrivateKey, [options, ca ...

  2. js学习之BOM和DOM

    1. 浏览器的原理 1.1 浏览器的多线程 (1)  解析js引擎线程 (2)  UI渲染线程 (3)  事件发起线程 (4)  发起请求的线程 (5)  定时器的线程 1.2 同步异步 (1)  前 ...

  3. Python---面向对象---修学校

    一.创建北京和成都两个校区: 1.创建Linux\Python两个课程 2.创建北京校区的Python 3期课程和成都校区的Linux 1期课程 3.管理员创建了北京校区的学员小张,并将其分配在了Py ...

  4. Linux学习-samba服务

    一.Samba介绍 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. SMB (Server Messages Block,信息服务块) 是一种在局域网 ...

  5. css语法以及css选择器

    CSS语法 CSS的标准语法主要由两方面构成一是 选择器.二是 声明框. 一.选择器      通过选择器可以选定页面指定的元素,并将声明块中的样式应用在选择器选中的元素中去. 二.声明框       ...

  6. Mysql数据库表类型

    MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种. 这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型.下面做个对比:   MyISA ...

  7. 转载--C 的回归

    转载自http://blog.codingnow.com/2007/09/c_vs_cplusplus.html 周末出差,去另一个城市给公司的一个项目解决点问题.回程去机场的路上,我用手机上 goo ...

  8. shell后台进程

    建立duplicate_removal.sh文件,内容如下:#!/bin/bashmysql -vvv -u root -p123456 test -e "truncate t_target ...

  9. error: ‘xxx’ does not name a type

    error: ‘TPlanMgr’ does not name a type 两个头文件相互应用会导致一个头文件你的类型无定义问题.

  10. CentOS和Windows互相远程桌面方法

    https://blog.csdn.net/libaineu2004/article/details/49407883