[2019杭电多校第一场][hdu6578]Blank(dp)
题目链接: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)的更多相关文章
- 2019杭电多校第一场hdu6581 Vacation
Vacation 题目传送门 update(O(n)) 看了那个O(n)的方法,感觉自己想的那个O(nlogn)的好傻,awsl. 0车最终通过停车线的时候,状态一定是某个车堵住后面的所有车(这个车也 ...
- [2019杭电多校第一场][hdu6582]Path(最短路&&最小割)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6582 题意:删掉边使得1到n的最短路改变,删掉边的代价为该边的边权.求最小代价. 比赛时一片浆糊,赛后 ...
- [2019杭电多校第一场][hdu6583]Typewriter(后缀自动机&&dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6583 大致题意是说可以花费p在字符串后添加一个任意字符,或者花费q在字符串后添加一个当前字符串的子串. ...
- [2019杭电多校第一场][hdu6579]Operation(线性基)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题目大意是两个操作,1个是求[l,r]区间子序列的最大异或和,另一个是在最后面添加一个数. 如果 ...
- 2019杭电多校第一场hdu6579 Operation(线性基)
Operation 题目传送门 解题思路 把右边的数尽量往高位放,构造线性基的时候同时记录其在原序列中的位置,在可以插入的时候如果那个位置上存在的数字的位置比新放入的要小,就把旧的往后挤.用这种发现构 ...
- 2018 Multi-University Training Contest 1 杭电多校第一场
抱着可能杭电的多校1比牛客的多校1更恐怖的想法 看到三道签到题 幸福的都快哭出来了好吗 1001 Maximum Multiple(hdoj 6298) 链接:http://acm.hdu.edu. ...
- 2019年杭电多校第一场 1009题String(HDU6586+模拟+单调栈)
题目链接 传送门 题意 给你一个字符串,要你构造一个长为\(k\)的子串使得每个字母出现的次数在\([L_i,R_i](0\leq i\leq26)\)间且字典序最小. 思路 做这种题目就是要保持思路 ...
- 2019年杭电多校第一场 1004题Vacation(HDU6581+数学)
题目链接 传送门 题意 有\(n+1\)辆车要过红绿灯,告诉你车的长度.与红绿灯的起点(题目假设红绿灯始终为绿).车的最大速度,问你第\(0\)辆车(距离最远)车头到达红绿灯起点的时间是多少(每辆车最 ...
- 2019年杭电多校第一场 1002题Operation(HDU6579+线性基)
题目链接 传送门 题意 初始时有\(n\)个数,现在有\(q\)次操作: 查询\([l,r]\)内选择一些数使得异或和最大: 在末尾加入一个数. 题目强制在线. 思路 对于\(i\)我们记录\([1, ...
随机推荐
- JVM 虚拟机栈
虚拟机栈: 栈元素是栈帧.方法调用,栈帧入栈,反之出栈. 栈帧:一个方法的运行空间. 1.局部变量表:方法定义的局部变量.方法的参数存在该表. 实例方法中有个隐含参数“this”,所以实例方法可以访问 ...
- CSS3边框 圆角效果 border-radius
border-radius是向元素添加圆角边框 使用方法: border-radius:10px; /* 所有角都使用半径为10px的圆角 */ border-radius: 5px 5px 5px ...
- 扩展微信小程序 Page 构造函数,修改生命周期函数
不BB,直接正题 一. 将公共方法绑定到Page上 单个绑定 const oldPage = Page Page = function(app) { // 注意公共函数的名字不要重复,否则覆盖 app ...
- C++ GUI Qt4学习笔记03
C++ GUI Qt4学习笔记03 qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...
- 在volist中用遍历
$('.InColor').each(function(){ if($(this).val()==1){ $('.absolute').css({"color":"gra ...
- SQL JOIN INNER LEFT RIGHT FULL
1.引用2个表(效果同INNER JOIN) SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Ord ...
- IDEA简单破解激活操作流程(我在用的)
其实简单的,你需要下一个包,将他放入你的IDEA安装目录的bin下,如下下图 下载地址:https://pan.baidu.com/s/1aJDefDGmfYGrkcJCpZYccA 看到红线的地方了 ...
- Oracle JET(一)Oracle JET介绍
Oracle JET (Oracle Javascript Extension Toolkit)是一款 Oracle 的 JavaScript 拓展工具包.简单来说 Oracle JET 是一个一堆好 ...
- code_action
w https://raw.githubusercontent.com/laravel/laravel/master/config/database.php <?php return [ /* ...
- Django学习之数据库与ORM
二.ORM表模型 表(模型)的创建: 1.ORM之增(create.save) 一对多(ForeignKey): 多对多(ManyToManyField()): 2.ORM之删(delete) 3.O ...