【XSY3209】RGB Sequence
题目
解法
用\(f_{i, j, k}\)表示有\(i\)个红石块, \(j\)个绿宝石块, \(k\)个钻石块
可以转移到\(f_{p+1, j, k}\)、 \(f_{i, p+1,k }\)、\(f_{i, j, p+1}\), \(p\)为\(max(i, j, k)\)
代码
#pragma GCC optimize(3)
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int mod = 1000000007;
const int N = 310;
const int M = 310;
struct node
{ int a, b;
node() { }
node(int _1, int _2) : a(_1), b(_2) { }
} list[M];
int head[N], nxt[M], tot;
inline void init()
{ memset(head, -1, sizeof(head));
tot = 0;
}
inline void link(int x, int y, int z)
{ list[tot] = node(y, z);
nxt[tot] = head[x];
head[x] = tot++;
}
inline int max(int x, int y) { return x > y ? x : y; }
inline int Plus(int a, int b) { return a + b >= mod ? a + b - mod : a + b; }
int n, m;
inline bool check(int a, int b, int c)
{ int num = max(a, max(b, c));
for (register int i = head[num]; ~i; i = nxt[i])
{ int l = list[i].a;
int cnt = (l <= a) + (l <= b) + (l <= c);
if (cnt != list[i].b) return 0;
}
return 1;
}
int f[N][N][N];
int Dp()
{ f[0][0][0] = 1;
int Ans = 0;
register int i, j, k;
for (i = 0; i <= n; i++)
{ for (j = 0; j <= n; j++)
{ for (k = 0; k <= n; k++)
{ if (!f[i][j][k]) continue;
if (!check(i, j, k)) { f[i][j][k] = 0; continue; }
int p = max(i, max(j, k));
// if (p == n) { Ans = Plus(Ans, f[i][j][k]); continue; }
f[p+1][j][k] = Plus(f[p+1][j][k], f[i][j][k]);
f[i][p+1][k] = Plus(f[i][p+1][k], f[i][j][k]);
f[i][j][p+1] = Plus(f[i][j][p+1], f[i][j][k]);
}
}
}
for (int i = 0; i <= n; i++)
for (int j = 0; j <= n; j++)
{ Ans = Plus(Ans, f[i][j][n]);
Ans = Plus(Ans, f[i][n][j]);
Ans = Plus(Ans, f[n][i][j]);
}
return Ans;
}
int main()
{ scanf("%d %d", &n, &m);
init();
for (int i = 1; i <= m; i++)
{ int l, r, x;
scanf("%d %d %d", &l, &r, &x);
if (r-l+1 < x) return 0 & puts("0");
link(r, l, x);
}
printf("%d\n", Dp());
return 0;
}
【XSY3209】RGB Sequence的更多相关文章
- 【arc074e】RGB Sequence(动态规划)
[arc074e]RGB Sequence(动态规划) 题面 atcoder 洛谷 翻译见洛谷 题解 直接考虑暴力\(dp\),设\(f[i][j][k][l]\)表示当前考虑到第\(i\)位,最后一 ...
- 【ARC074e】RGB sequence
Description 一排\(n\)个格子,每个格子可以涂三种颜色的一种.现在给出\(m\)个形如"\([l,r]\)中必须恰好有\(x\)种颜色"的限制(\(1 \le l ...
- 【arc074e】RGB Sequence dp
Description 丰泽爷今天也在愉快地玩Minecraft! 现在丰泽爷有一块1∗N1∗N的空地,每个格子按照顺序标记为11到NN.丰泽爷想要在这块空地上铺上红石块.绿宝石块和钻石块作为 ...
- 【arc071f】Infinite Sequence(动态规划)
[arc071f]Infinite Sequence(动态规划) 题面 atcoder 洛谷 题解 不难发现如果两个不为\(1\)的数连在一起,那么后面所有数都必须相等. 设\(f[i]\)表示\([ ...
- 【BZOJ1367】[Baltic2004]sequence 左偏树
[BZOJ1367][Baltic2004]sequence Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sampl ...
- 【BZOJ3043】IncDec Sequence 乱搞
[BZOJ3043]IncDec Sequence Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要 ...
- 【C#】RGB,CMYK,HSB各种颜色表示的转换(转)
[C#]RGB,CMYK,HSB各种颜色表示的转换 一.表示颜色的方式有很多种,如RGB,CMYK,HSB,Hex等等 1.RGB:这种表示颜色由三原色构成,通过红,绿,蓝三种颜色分量的不同,组合 ...
- T89353 【BIO】RGB三角形
T89353 [BIO]RGB三角形 题解 对于这个题目有一个规律: 如果一个数列的长度为 3k+1(0<=k) 那么,这个数列最终缩放成的一个字母只和这个数列的首项,尾项有关 所以我们可以先 ...
- 【AGC025B】RGB Color
[AGC025B]RGB Color 题面描述 Link to Atcoder Link to Luogu Takahashi has a tower which is divided into \( ...
随机推荐
- Loj #6000.「 网络流 24 题 」搭配飞行员
解题思路 考虑如何建模. 既然是网络流,那么肯定要有源点和汇点.而这个题目并没有什么明显的源点和汇点. 想一想,如果一个飞机能够起飞的话,那么必定有一对可以配对的正副驾驶员.也就是说一条曾广路能够上必 ...
- Servlet的说明及使用案例
Servlet的说明及使用案例 制作人:全心全意 Servle的基础介绍 Servlet结构体系 Servlet对象.ServletConfig对象与Serializable对象是接口对象,其中Ser ...
- PyQt5Icon图标(Icon)无法显示问题
PyQt5中设置图标无法显示 以下源码来源PyQt5教程http://zetcode.com/gui/pyqt5/firstprograms/ import sys from PyQt5.QtWidg ...
- SQL学习笔记:库和表的创建
目录 创建和删除数据库 创建和删除表 添加.修改和删除字段 创建和删除数据库 CREATE DATABASE justForLearn; DROP DATABASE justForLearn; 创建和 ...
- Java控制台读写
Java控制台读写 控制台读 Java中进行控制台读操作主要是通过Scanner,BufferReader,Console类进行 1. Scanner Scanner对象定义 在控制台 Scanner ...
- Python异常捕捉的一个小问题
问题: names = ['taotao','songwenjing','liu','li']I = iter(names)while True: try: s = next(I) except Ex ...
- 设置idea快速生成doc comment
在eclipse中快速生成方法的doc comment快捷键是Alt+Shift+J, 而在idea中没有对应的快捷键,但是能实现相似的功能. 1.在方法上面输入/** 然后回车就可以生成注释了. 2 ...
- cocos2dx 用命令行进行编译的指令
cocos compile -p android -m release -s F:\cocosproj\antest --ap android-20 上面那条就是我常用的指令,这指令修改一下就成了你的 ...
- 洛谷—— P1122 最大子树和
https://www.luogu.org/problem/show?pid=1122 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课 ...
- 创建NetCore2.2 Web项目+EFCore+SQLServer
在空余时间学习下NetCore,记录日常,供参考. 1.确保已下载安装NetCore2.2SDK 环境,下载地址:https://dotnet.microsoft.com/download/dotne ...