题目

传送门

解法

用\(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的更多相关文章

  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. 【arc071f】Infinite Sequence(动态规划)

    [arc071f]Infinite Sequence(动态规划) 题面 atcoder 洛谷 题解 不难发现如果两个不为\(1\)的数连在一起,那么后面所有数都必须相等. 设\(f[i]\)表示\([ ...

  5. 【BZOJ1367】[Baltic2004]sequence 左偏树

    [BZOJ1367][Baltic2004]sequence Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sampl ...

  6. 【BZOJ3043】IncDec Sequence 乱搞

    [BZOJ3043]IncDec Sequence Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要 ...

  7. 【C#】RGB,CMYK,HSB各种颜色表示的转换(转)

    [C#]RGB,CMYK,HSB各种颜色表示的转换   一.表示颜色的方式有很多种,如RGB,CMYK,HSB,Hex等等 1.RGB:这种表示颜色由三原色构成,通过红,绿,蓝三种颜色分量的不同,组合 ...

  8. T89353 【BIO】RGB三角形

    T89353 [BIO]RGB三角形 题解 对于这个题目有一个规律:  如果一个数列的长度为 3k+1(0<=k) 那么,这个数列最终缩放成的一个字母只和这个数列的首项,尾项有关 所以我们可以先 ...

  9. 【AGC025B】RGB Color

    [AGC025B]RGB Color 题面描述 Link to Atcoder Link to Luogu Takahashi has a tower which is divided into \( ...

随机推荐

  1. Mysql Group by 分组取最小的实现方法

    表结构如下图:

  2. Linux查看用户列表

    cat /etc/passwd 可以查看所有用户的列表w 可以查看当前活跃的用户列表cat /etc/group 查看用户组 groups 查看当前登录用户的组内成员groups gliethttp ...

  3. DataFrame NaN 替换为零

    一个DataFrame 其中有空值NaN,将其替换为0: df.fillna(0) 如果将第一列替换为0: df[1].fillna(0,inplace=True)

  4. 对百词斩&可可英语的测试

    第六周小组作业 基本任务:功能测试和测试管理 温馨提示:本篇博客中,看不清的图片,可以按住Ctrl同时滚动鼠标滚轮查看:也可以点击图片下方的链接,在新选项卡打开后,点击小加号查看. (1)计划说明 本 ...

  5. [luoguP2904] [USACO08MAR]跨河River Crossing(DP)

    传送门 f[i] 表示送前 i 头牛过去再回来的最短时间 f[i] = min(f[i], f[j] + sum[i - j] + m) (0 <= j < i) ——代码 #includ ...

  6. 【NJU749D】triple(莫比乌斯反演)

    题意: cas<=100 n<=10^5 思路:与两个数的没什么区别 F(d)=(n div d)*(n div d-1)*(n div d-2) div 6 再加上喜闻乐见的下底函数分块 ...

  7. (13)Corner Detection角点检测

    import cv2 import numpy as np img=cv2.imread('opencv-corner-detection-sample.jpg') gray = cv2.cvtCol ...

  8. 总结懒加载的解决方法(全)org.hibernate.LazyInitializationException: could not initialize proxy - no Session

    如下错误:org.hibernate.LazyInitializationException: could not initialize proxy - no Session 原因是懒加载的问题,因为 ...

  9. windows下如何正确使用Jconsole远程连接linux主机上的JVM

    https://www.aliyun.com/jiaocheng/589230.html

  10. [poj2311]Cutting Game_博弈论

    Cutting Game poj-2311 题目大意:题目链接 注释:略. 想法: 我们发现一次操作就是将这个ICG对应游戏图上的一枚棋子变成两枚. 又因为SG定理的存在,记忆化搜索即可. 最后,附上 ...