题目传送门:https://arc074.contest.atcoder.jp/tasks/arc074_c

题目翻译

给你一行\(n\)个格子,你需要给每个格子填红绿蓝三色之一,并且同时满足\(m\)个约束。每个约束由\(l,r,x\)来形容,表示\(l\)到\(r\)之间的所有格子颜色种数必须为\(x\),求方案数。\(n,m\leqslant 300\)

题解

设\(f[i][j][k]\)表示当前已经涂到了\(x=max\){\(i,j,k\)},最后一个红色格子在\(i\),最后一个绿色格子在\(j\),最后一个蓝色格子在\(k\)并且凡是\(r\)小于等于当前格子的约束都满足的方案数。直接转移到\(f[x+1][j][k],f[i][x+1][k],f[i][j][x+1]\)即可。因为三种颜色没有本质区别,所以我们印点\(i>j>k\)。

时间复杂度:\(O(n^3+n^2*m)\)

空间复杂度:\(O(n^3)\)

代码如下:

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<int,int>pii; const int pps=1e9+7; int n,m,ans;
vector<pii>q[305];
int f[305][305][305];
vector<pii>::iterator it; int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
} int main() {
n=read(),m=read();
for(int i=1;i<=m;i++) {
int l=read(),r=read(),x=read();
q[r].push_back(make_pair(l,x));
}f[0][0][0]=1;
for(int i=1;i<=n;i++) {
for(int j=0;j<i;j++)
for(int k=0;k<=j;k++) {//<=是因为j,k可以全部等于0
f[i][j][k]=(f[i][j][k]+f[i-1][j][k])%pps;
f[i][i-1][k]=(f[i][i-1][k]+f[i-1][j][k])%pps;
f[i][i-1][j]=(f[i][i-1][j]+f[i-1][j][k])%pps;
for(it=q[i].begin();it!=q[i].end();it++) {
int tmp=(j>=(*it).first)+(k>=(*it).first)+1;
if(tmp!=(*it).second)f[i][j][k]=0;
}
}
}
for(int i=0;i<n;i++)
for(int j=0;j<=i;j++)
ans=(ans+f[n][i][j])%pps;
printf("%d\n",ans);
return 0;
}

AtCoder Regular Contest 074 E:RGB Sequence的更多相关文章

  1. AtCoder Regular Contest 080 E:Young Maids

    题目传送门:https://arc080.contest.atcoder.jp/tasks/arc080_c 题目翻译 给你一个\(n\)的排列\(p\),一个空序列\(q\),你每次可以从\(p\) ...

  2. AtCoder Regular Contest 072 E:Alice in linear land

    题目传送门:https://arc072.contest.atcoder.jp/tasks/arc072_c 题目翻译 给你一个数组\(D\),然后给你一个操作序列\(d\),每次操作可以将\(D\) ...

  3. AtCoder Regular Contest 073 E:Ball Coloring

    题目传送门:https://arc073.contest.atcoder.jp/tasks/arc073_c 题目翻译 给你\(N\)个袋子,每个袋子里有俩白球,白球上写了数字.对于每一个袋子,你需要 ...

  4. AtCoder Regular Contest 063 E:Integers on a Tree

    题目传送门:https://arc063.contest.atcoder.jp/tasks/arc063_c 题目翻译 给你一个树,上面有\(k\)个点有权值,问你是否能把剩下的\(n-k\)个点全部 ...

  5. AtCoder Regular Contest 074 F - Lotus Leaves

    题目传送门:https://arc074.contest.atcoder.jp/tasks/arc074_d 题目大意: 给定一个\(H×W\)的网格图,o是可以踩踏的点,.是不可踩踏的点. 现有一人 ...

  6. AtCoder Regular Contest 093 E: Bichrome Spanning Tree(生成树)

    Bichrome Spanning Tree 题意: 给出一个n个点,m条边的无向连通图,现在要给每条边染色,可以染成黑色或者白色. 现在要求在染色完毕后,找出一个至少包含一条黑边和一条白边的最小生成 ...

  7. AtCoder Regular Contest 074 瞎打记

    (很长时间没更新了>_<) 由于机房的网总是奥妙重重,开考30多分钟之后我才登进去... 然后发现T1是个简单枚举,1A.T2是个简单优先队列,1A.T3似乎需要一点推导,先看了T4发现是 ...

  8. 【arc077f】AtCoder Regular Contest 074 F - Lotus Leaves

    题意 给定一个n*m的池塘,每个格子上可能有叶子. 从一个叶子出发,可以跳到相同行或相同列的叶子. 问至少去掉多少叶子,使得起点不能到达终点. \(n,m<=100\) 解法 很显然的最小割模型 ...

  9. AtCoder Regular Contest 061

    AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...

随机推荐

  1. condarc文件

    channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ - https://mirrors.tuna.tsingh ...

  2. 关于安装oracle 11g client 出现安装先决条件检查全部失败

    本文转自:https://blog.csdn.net/iloli/article/details/45244159 今天我在安装Oracle11gClient时,全部显示成N/A,Oracle无法执行 ...

  3. 近期公共祖先(LCA)——离线Tarjan算法+并查集优化

    一. 离线Tarjan算法 LCA问题(lowest common ancestors):在一个有根树T中.两个节点和 e&sig=3136f1d5fcf75709d9ac882bd8cfe0 ...

  4. CGI FASTCGI php-fpm

    CGI(Common Gateway Interface) CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工 ...

  5. C#里类的get和set方法编写和调用

    using System; class Date { int day; int month; int year; public int Day{ get { return day; } set { d ...

  6. linux 经常使用命令

    帮助信息 ./configure -help|grep mysql 安装php ./configure --prefix=/usr/local/fastphp --with-mysql=mysqlnd ...

  7. 各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient

    之前的一篇博客<网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient>,我们介绍了RTSP流的检测和分析工具EasyRTS ...

  8. 点聚-weboffice 6.0 (一)

    WebOffice是一款由北京点聚信息技术有限公司提供的完全免费(商业用途也免费)且功能强大的在线Word/excel/wps编辑辅助控件,可以实现:1.在线编辑Word.Excel.PPT.WPS. ...

  9. Swift 学习笔记 (闭包)

    闭包是可以在你的代码中被传递和饮用的功能性独立模块.Swift中的闭包和C以及Objective-C中的Block很像,和其他语言中的匿名函数也很像. 闭包能捕获和存储定义在其上下文中的任何常量和变量 ...

  10. SSL:Ubuntu证书配置

    CA证书的配置 Ubuntu上CA证书的配置可以通过工具ca-certificates来方便的进行.该工具默认是随Ubuntu安装的,如果没有可以通过下面的命令来安装: sudo apt-get in ...