[2019HDU多校第一场][HDU 6578][A. Blank]
题目链接: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
#include<bits/stdc++.h>
using namespace std;
#define N 101
#define mp make_pair
#define MOD 998244353
int T,n,m,l,r,x,f[N][N][N][],ans;
vector<pair<int,int>>d[N];
void init()
{
ans=;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
d[i].clear();
d[i].push_back(mp(i,));
}
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&l,&r,&x);
d[r].push_back(mp(l,x));
}
memset(f,,sizeof(f));
f[][][][]=;
for(int cur=;cur<=n;cur++)
{
int o=cur&;
for(int i=;i<=cur;i++)
for(int j=i;j<=cur;j++)
for(int k=j;k<=cur;k++)
f[i][j][k][o]=;
for(int i=;i<=cur;i++)
for(int j=i;j<=cur;j++)
for(int k=j;k<=cur;k++)
{
(f[j][k][cur-][o]+=f[i][j][k][o^])%=MOD;
(f[i][k][cur-][o]+=f[i][j][k][o^])%=MOD;
(f[i][j][cur-][o]+=f[i][j][k][o^])%=MOD;
(f[i][j][k][o]+=f[i][j][k][o^])%=MOD;
}
for(int i=;i<=cur;i++)
for(int j=i;j<=cur;j++)
for(int k=j;k<=cur;k++)
for(auto pi:d[cur])
{
l=pi.first,r=cur,x=pi.second;
if((i>=l)+(j>=l)+(k>=l)+(cur>=l)!=x)
f[i][j][k][o]=;
}
}
for(int i=;i<=n;i++)
for(int j=i;j<=n;j++)
for(int k=j;k<=n;k++)
(ans+=f[i][j][k][n&])%=MOD;
printf("%d\n",ans);
}
int main()
{
scanf("%d",&T);
while(T--)init();
}
代码中对vector的初始化其实是没必要额外push_back的,写的时候为了保险就加上去了(虽然差点导致TLE)
这竟然是我博客里的第一道纯DP题...?
[2019HDU多校第一场][HDU 6578][A. Blank]的更多相关文章
- [2019HDU多校第一场][HDU 6580][C. Milk]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6580 题目大意:\(n\times m\)大小的方格上有\(k\)瓶水,喝完每瓶水都需要一定的时间.初 ...
- [2019HDU多校第一场][HDU 6584][G. Meteor]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6584 题目大意:求所有满足\(0<\frac{p}{q}\leq1, gcd(p,q)=1,p\ ...
- [2019HDU多校第一场][HDU 6590][M. Code]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6590 题目大意(来自队友):二维平面上有\(n\)个点,每个点要么是黑色要么是白色,问能否找到一条直线 ...
- [2019HDU多校第一场][HDU 6588][K. Function]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6588 题目大意:求\(\sum_{i=1}^{n}gcd(\left \lfloor \sqrt[3] ...
- 2019HDU多校第一场1001 BLANK (DP)(HDU6578)
2019HDU多校第一场1001 BLANK (DP) 题意:构造一个长度为n(n<=10)的序列,其中的值域为{0,1,2,3}存在m个限制条件,表示为 l r x意义为[L,R]区间里最多能 ...
- [2019HDU多校第二场][HDU 6591][A. Another Chess Problem]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6591 题目大意:二维坐标系上,所有满足\(5|2x+y\)的点都被设为障碍物,无法通过.现给出一对点, ...
- 2019HDU多校第一场 BLANK DP
题意:有四种数字,现在有若干个限制条件:每个区间中不同的数字种类必须是多少种,问合法的方案数. 思路: 定义 dp[i][j][k][t] 代表填完前 t 个位置后,{0,1,2,3} 这 4 个数字 ...
- 2019HDU多校第一场 String 贪心
题意:给你一个字符串,问是否存在一个长度为m的子序列,子序列中对应字符的数目必须在一个范围内,问是否存在这样的字符串?如果存在,输出字典序最小的那个. 思路:贪心,先构造一个序列自动机,序列自动机指向 ...
- 2019HDU多校第一场 6582 Path 【最短路+最大流最小割】
一.题目 Path 二.分析 首先肯定要求最短路,然后如何确定所有的最短路其实有多种方法. 1 根据最短路,那么最短路上的边肯定是可以满足$dist[from] + e.cost = dist[to] ...
随机推荐
- 24.Azkaban调度脚本的编写
启动azkaban 在启动了server和excutor之后,在浏览器打开azkaban,会发现不能打开,日志报这个错误 at sun.security.ssl.InputRecord.handleU ...
- 关于使用pietty或putty终端连接ubuntu虚拟机时报被拒绝连接问题
首先如果要使用终端进行远程连接的ubuntu虚拟机的话,必须保证其虚拟机ip能在window下ping的动.具体的ubuntu网络配置这里不再讲,我这里使用的是NAT连接. 然后检查ssh服务是否有安 ...
- (MVC — — Demo)客户管理系统的开发日志
点击一下 目录 第一步:搭建开发环境 第二步:层次包(按照三层架构思想写) 第四步:开发(utils)工具包 第四步:开发 Dao 层 第五步:开发 services 层 第六步:开发 factory ...
- 关于centOS安装配置xampp那点事
1.到官网下载centOS对应版本的xampp,应该是以tar.gz为后缀的 2.tar -zxf 下载的包 3.mv lampp /opt 4.service mysqld stop因xampp里自 ...
- php中连接tcp服务的三种方式
首先需要现有一个 tcp 服务,我们使用 php中的 socket 系列函数实现 <?php //创建socket套接字 $socket = socket_create(AF_INET, SOC ...
- Secret的三种形式
Secret ConfigMap这个资源对象是Kubernetes当中非常重要的一个对象,一般情况下ConfigMap是用来存储一些非安全的配置信息,如果涉及到一些安全相关的数据的话用ConfigMa ...
- 2-MySQL DBA笔记-MySQL安装部署和入门
第2章 MySQL安装部署和入门 第1章介绍了MySQL的一些基础知识,本章将为读者介绍MySQL的部署.安装及一些常用命令和参数的设置.2.1 如何选择MySQL版本 在选择MySQL的版本时,要根 ...
- Windows编程 Windows程序的生与死(下)
再谈程序之“死” 记得在第二回中我对程序的“死”只是一句话带过,因为我还没有铺垫好,好了现在我们可以详细的分析一下这个过程了. 这还要从while消息循环说起,还记得GetMessage函数吗?它是一 ...
- C#使用phantomjs,爬取AJAX加载完成之后的页面
1.开发思路:入参根据apiSetting配置文件,分配静态文件存储地址,可实现不同站点的静态页生成功能.静态页生成功能使用无头浏览器生成,生成之后的字符串进行正则替换为固定地址,实现本地正常访问. ...
- TPFanControl.ini
TPFanControl.ini 64位系统安装目录分为两种 64位用:C:\Program Files 32位用:C:\Program Files (x86) 64位系统系统目录分为两种 64位用: ...