博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AtCoder - 2567 RGB Sequence
阅读量:4689 次
发布时间:2019-06-09

本文共 2060 字,大约阅读时间需要 6 分钟。

Problem Statement

There are N squares arranged in a row. The squares are numbered 1, 2, , N, from left to right.

Snuke is painting each square in red, green or blue. According to his aesthetic sense, the following M conditions must all be satisfied. The i-th condition is:

  • There are exactly xi different colors among squares li, li+1, , ri.

In how many ways can the squares be painted to satisfy all the conditions? Find the count modulo 109+7.

Constraints
  • 1≤N≤300
  • 1≤M≤300
  • 1≤liriN
  • 1≤xi≤3
Input

Input is given from Standard Input in the following format:

N Ml1 r1 x1l2 r2 x2:lM rM xM
Output

Print the number of ways to paint the squares to satisfy all the conditions, modulo 109+7.

Sample Input 1
3 11 3 3
Sample Output 1
6

The six ways are:

  • RGB
  • RBG
  • GRB
  • GBR
  • BRG
  • BGR

where R, G and B correspond to red, green and blue squares, respectively.

Sample Input 2
4 21 3 12 4 2
Sample Output 2
6

The six ways are:

  • RRRG
  • RRRB
  • GGGR
  • GGGB
  • BBBR
  • BBBG
Sample Input 3
1 31 1 11 1 21 1 3
Sample Output 3
0

There are zero ways.

Sample Input 4
8 102 6 25 5 13 5 24 7 34 4 12 3 17 7 11 5 21 7 33 4 2
Sample Output 4
108     还是小清新dp比较好,写起代码来非常的令人身心愉悦233333     让我们设 f[j][k][u] 为最近出现三种颜色的位置为j,k,u的方案数,那么转移直接把随便一维变成当前枚举的i即可。     至于限制条件,我们只需要在i==r的时候把 (j>=l) + (k>=l) + (u>=l) != x 的 f[j][k][u] 设置成0即可。     看起来是O(N^4)的??? 实际上因为至少一维要是i-1或者i,所以复杂度实际上是O(N^3)的。
#include
#include
#define ll long longusing namespace std;#define pb push_backconst int ha=1e9+7,maxn=305;inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;}int f[maxn][maxn][maxn],n,m,k,L,R,ans;vector
g[maxn][4];inline void update(int p){ for(int i=1;i<=3;i++) for(int j=g[p][i].size()-1,l;j>=0;j--){ l=g[p][i][j]; for(int a=0;a<=p;a++) for(int b=0;b<=p;b++) for(int c=(a
<=p;c++) if((a>=l)+(b>=l)+(c>=l)!=i) f[a][b][c]=0; }}inline void dp(){ f[0][0][0]=1; for(int i=1;i<=n;i++){ for(int j=0;j

 

 

转载于:https://www.cnblogs.com/JYYHH/p/9100803.html

你可能感兴趣的文章
初级ant的学习
查看>>
redis数据结构--String
查看>>
POJ 3279 Fliptile (二进制枚举)
查看>>
memcached 细究(三)
查看>>
future
查看>>
关于main函数传参数的问题
查看>>
getTickCount()函数 VS GetTickCount()函数
查看>>
嵌入式jetty
查看>>
2017~回顾分享
查看>>
let const var的区别与作用
查看>>
计算出线在屏幕内的最长坐标
查看>>
使用svn——项目的目录布局
查看>>
Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理
查看>>
【bzoj4310/hdu5030-跳蚤】后缀数组
查看>>
深度信任网络的快速学习算法(Hinton的论文)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
s的封装和信息隐蔽
查看>>
excelhttp://www.cnblogs.com/caoyuanzhanlang/p/3591904.html
查看>>
webservice整合spring cxf
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>