[Arc074E] RGB Sequence

Description

今天也在愉快地玩Minecraft!现在MM有一块1?N的空地,每个格子按照顺序标记为1到N。MM想要在这块空地上铺上红石块、绿宝石块和钻石块作为装饰。每个格子只能选择一种方块。MM有自己的审美标准。他定下了M条规定,每条规定形如(li,ri,xi),表示闭区间[li,ri]中,需要有恰好xi种不同的方块。MM觉得这个任务实在是太简单了,于是把它交给了你,但是你发现有太多种方式可以满足MM的审美需求了!于是你希望先知道,一共有多少铺方块的方法,可以满足MM的审美需求?答案对109+7取模

Input

第一行两个整数,N,M

接下来M行,每行三个整数li,ri,xi

Output

一个整数,对109+7取模后的答案

Sample Input

Case 1:3 1

1 3 3

Case 2:4 2

1 3 1

2 4 2

Case 3:1 3

1 1 1

1 1 2

1 1 3

Case 4:8 10

2 6 2

5 5 1

3 5 2

4 7 3

4 4 1

2 3 1

7 7 1

1 5 2

1 7 3

3 4 2

Sample Output

Case 1:6

Case 2:6

Case 3:0

Case 4:108

HINT

1≤N,M≤300

1≤li≤ri≤N

1≤xi≤3

试题分析

设\(f{i,j,k}\)表示填到第i位,另外两种颜色最后一次涂在\(\{j,k\}\)的方案数。

在右端点判断不合法情况,转移即可。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<algorithm> using namespace std;
#define LL long long inline int read(){
int x=0,f=1; char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*f;
}
const int INF = 2147483600;
const int MAXN = 100010;
const int Mod = 1e9+7; int N,M;
struct data{
int l,x; data(int ll=0,int xx=0){
l=ll; x=xx;
}
}; vector<data> vec[MAXN+1];
inline bool check(int i,int j,int k){
for(int l=0;l<vec[i].size();l++){
int cnt=1; if(vec[i][l].l<=j) ++cnt;
if(vec[i][l].l<=k) ++cnt;
if(cnt!=vec[i][l].x) return false;
} return true;
}int f[301][301][301]; int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
N=read(),M=read();
for(int i=1;i<=M;i++){
int l=read(),r=read(),x=read();
vec[r].push_back(data(l,x));
} f[0][0][0]=1;
for(int i=0;i<N;i++){
for(int j=0;j<(i==0?1:i);j++){
for(int k=0;k<(j==0?1:j);k++){
if(!check(i,j,k)){f[i][j][k]=0; continue;}
(f[i+1][i][j]+=f[i][j][k])%=Mod;
(f[i+1][i][k]+=f[i][j][k])%=Mod;
(f[i+1][j][k]+=f[i][j][k])%=Mod;
}
}
} int ans=0;
for(int i=0;i<=N;i++){
for(int j=i+1;j<=N;j++)
if(check(N,j,i)) (ans+=f[N][j][i])%=Mod;
}if(check(N,0,0)) (ans+=f[N][0][0])%=Mod;
printf("%d\n",ans);
return 0;
}

[Arc074E] RGB Sequence的更多相关文章

  1. 【arc074e】RGB Sequence(动态规划)

    [arc074e]RGB Sequence(动态规划) 题面 atcoder 洛谷 翻译见洛谷 题解 直接考虑暴力\(dp\),设\(f[i][j][k][l]\)表示当前考虑到第\(i\)位,最后一 ...

  2. 【ARC074e】RGB sequence

    Description ​ 一排\(n\)个格子,每个格子可以涂三种颜色的一种.现在给出\(m\)个形如"\([l,r]\)中必须恰好有\(x\)种颜色"的限制(\(1 \le l ...

  3. 【arc074e】RGB Sequence dp

    Description ​ 丰泽爷今天也在愉快地玩Minecraft! ​ 现在丰泽爷有一块1∗N1∗N的空地,每个格子按照顺序标记为11到NN.丰泽爷想要在这块空地上铺上红石块.绿宝石块和钻石块作为 ...

  4. AtCoder - 2567 RGB Sequence

    Problem Statement There are N squares arranged in a row. The squares are numbered 1, 2, …, N, from l ...

  5. AT2567-[ARC074C]RGB Sequence【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/AT2567 题目大意 长度为\(n\)的包含三种颜色\(RGB\)的序列,\(m\)个限制\([l,r,k]\)表示 ...

  6. AT2567 RGB Sequence dp

    正解:计数dp 解题报告: 传送门! umm其实我jio得dp的题目的话就难在思想昂,,,知道状态知道转移就不难辣QAQ 所以就不说别的了直接写下思路放下代码就over辣QAQ 最基础的思想就是f[i ...

  7. [AT2567] [arc074_c] RGB Sequence

    题目链接 AtCoder:https://arc074.contest.atcoder.jp/tasks/arc074_c 洛谷:https://www.luogu.org/problemnew/sh ...

  8. ARC074 E RGB Sequence DP

    ---题面--- 题解: 首先,有一个不太直观的状态,f[i][j][k][l]表示DP到i位,三种颜色最后出现的位置分别是j, k, l的方案数.因为知道了三种颜色最后出现的位置,因此也可以得知以当 ...

  9. AtCoder Regular Contest 074 E:RGB Sequence

    题目传送门:https://arc074.contest.atcoder.jp/tasks/arc074_c 题目翻译 给你一行\(n\)个格子,你需要给每个格子填红绿蓝三色之一,并且同时满足\(m\ ...

随机推荐

  1. shell 给未定义的变量设定默认值 ${parameter:-word}

    参考: [ Unix & Linux ] Shell Demo $echo ${JENKINS_VERSION:-2.7.4} 2.7.4 $JENKINS_VERSION=2.99 $ech ...

  2. HDU 1180 诡异的楼梯 (广搜)

    题目链接 Problem Description Hogwarts正式开学以后,Harry发现在Hogwarts里,某些楼梯并不是静止不动的,相反,他们每隔一分钟就变动一次方向. 比如下面的例子里,一 ...

  3. Python 编码问题:出现中文乱码-- (转)

    问题描述: 在写Python代码的过程中,有用到需要输出中文的地方(python2.6.5在中文注释的地方就会出错),但是运行后会出错 我的错误显示: SyntaxError: Non-ASCII c ...

  4. 7.0docker镜像和仓库

    repository:镜像的仓库 registry :docker组件的仓库,docker镜像的存储服务 tag :镜像的标签 例:ubuntu:14.04  ubuntu:latest 删除镜像 d ...

  5. mybatis 显示 sql日志

    #项目日志logging.level.com.zhang.com=debug #mybatis sql相关日志显示logging.level.org.mybatis.spring=DEBUGloggi ...

  6. pandas中DataFrame使用

    切片选择 #显示第一行数据print(df.head(1)) #显示倒数三行数据 print(df.tail(3)) loc  df.loc[row_index,col_index]  注意loc是根 ...

  7. dev_cpu_dead

    Kernel: 4.12.6 每个cpu都有自己的softnet_data结构,用来处理数据包接收,但是当softnet_data所在cpu无法工作时,即CPUHP_NET_DEV_DEAD状态,就需 ...

  8. Linux 入门记录:十七、Linux 命令行文本/文件处理工具

    一.文件浏览 cat 查看文件内容 more 以翻页形式查看文件内容(只能向下翻页) less 以翻页形式查看文件内容(可以上下翻页) head 查看文件的头几行(默认10行) tail 查看文件的尾 ...

  9. Linux 入门记录:十三、Linux 扩展权限

    一.默认权限 每一个终端都有一个 umask 属性,是用来确定新建文件或目录的默认权限的“掩码”(mask 有“掩码”的含义,至于 u,后面说). Linux 中一般有默认的权限掩码,使用命令 uma ...

  10. signal, sigaction,信号集合操作

    信号是与一定的进程相联系的,而建立其信号和进程的对应关系,这就是信号的安装登记. Linux主要有两个函数实现信号的安装登记:signal和sigaction.其中signal在系统调用的基础上实现, ...