#dp,vector#AT2567 [ARC074C] RGB Sequence
分析
一种很正常的想法就是设\(dp[i][j][k]\),
表示前\(i\)个格子,其它两种颜色出现的位置分别为\(j,k,j>k或j=k=0(可取两种颜色)\)的方案数
那么颜色种类限制可以开vector存下以右端点为关键字的限制,然后转移的时候
\(dp[i+1][i][j],dp[i+1][i][k],dp[i+1][j][k]\)都可以由判定过后的\(dp[i][j][k]\)转移
也就是选取不同的颜色转移,时间复杂度\(O(n^3)\),注意\(j=k=0\)的情况
代码
#include <cstdio>
#include <cctype>
#include <vector>
#define rr register
using namespace std;
const int mod=1000000007,N=301;
struct rec{int l,x;};
int dp[N][N][N],n,m,ans; vector<rec>K[N];
inline signed iut(){
	rr int ans=0; rr char c=getchar();
	while (!isdigit(c)) c=getchar();
	while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
	return ans;
}
inline void Mo(int &x,int y){x=x+y>=mod?x+y-mod:x+y;}
inline signed check(int i,int j,int k){
	for (rr int p=0;p<K[i].size();++p){
		rr int l=K[i][p].l,x=K[i][p].x;
		if (x!=(i>=l)+(j>=l)+(k>=l)) return dp[i][j][k]=0;
	}
	return dp[i][j][k];
}
signed main(){
	n=iut(),m=iut(),dp[1][0][0]=3;
	for (rr int i=1;i<=m;++i){
		rr int l=iut(),r=iut(),x=iut();
		K[r].push_back((rec){l,x});
	}
	for (rr int i=1;i<n;++i) for (rr int j=0;j<i;++j)
	    for (rr int k=0,t;k<j+(!k);++k) if (t=check(i,j,k))
		    Mo(dp[i+1][j][k],t),Mo(dp[i+1][i][j],t),Mo(dp[i+1][i][k],t);
	for (rr int j=0,t;j<n;++j)
	for (rr int k=0;k<j+(!k);++k)
	    if (t=check(n,j,k)) Mo(ans,t);
	return !printf("%d\n",ans);
}
#dp,vector#AT2567 [ARC074C] RGB Sequence的更多相关文章
- [AT2567] [arc074_c] RGB Sequence
		题目链接 AtCoder:https://arc074.contest.atcoder.jp/tasks/arc074_c 洛谷:https://www.luogu.org/problemnew/sh ... 
- 【arc074e】RGB Sequence(动态规划)
		[arc074e]RGB Sequence(动态规划) 题面 atcoder 洛谷 翻译见洛谷 题解 直接考虑暴力\(dp\),设\(f[i][j][k][l]\)表示当前考虑到第\(i\)位,最后一 ... 
- [Arc074E] RGB Sequence
		[Arc074E] RGB Sequence Description 今天也在愉快地玩Minecraft!现在MM有一块1?N的空地,每个格子按照顺序标记为1到N.MM想要在这块空地上铺上红石块.绿宝 ... 
- AT2567 RGB Sequence dp
		正解:计数dp 解题报告: 传送门! umm其实我jio得dp的题目的话就难在思想昂,,,知道状态知道转移就不难辣QAQ 所以就不说别的了直接写下思路放下代码就over辣QAQ 最基础的思想就是f[i ... 
- AT2567-[ARC074C]RGB Sequence【dp】
		正题 题目链接:https://www.luogu.com.cn/problem/AT2567 题目大意 长度为\(n\)的包含三种颜色\(RGB\)的序列,\(m\)个限制\([l,r,k]\)表示 ... 
- Atcoder E - RGB Sequence(dp)
		题目链接:http://arc074.contest.atcoder.jp/tasks/arc074_c 题意:一共有3种颜色,红色,绿色,蓝色.给出m个要求l,r,x表示在区间[l,r]内要有x种不 ... 
- 【arc074e】RGB Sequence dp
		Description  丰泽爷今天也在愉快地玩Minecraft!  现在丰泽爷有一块1∗N1∗N的空地,每个格子按照顺序标记为11到NN.丰泽爷想要在这块空地上铺上红石块.绿宝石块和钻石块作为 ... 
- ARC074 E RGB Sequence DP
		---题面--- 题解: 首先,有一个不太直观的状态,f[i][j][k][l]表示DP到i位,三种颜色最后出现的位置分别是j, k, l的方案数.因为知道了三种颜色最后出现的位置,因此也可以得知以当 ... 
- AtCoder - 2567  RGB Sequence
		Problem Statement There are N squares arranged in a row. The squares are numbered 1, 2, …, N, from l ... 
- 递推DP URAL 1081 Binary Lexicographic Sequence
		题目传送门 题意:问第k个长度为n的01串是什么(不能有相邻的1) 分析:dp[i][0/1] 表示前i个,当前第i个放1或0的方案数,先预处理计算,dp[i][1]只能有dp[i-1][0]转移过来 ... 
随机推荐
- 如何保证消息顺序执行(Rabbitmq/kafka)
			转载: https://www.cnblogs.com/-wenli/p/13047059.html https://www.jianshu.com/p/02fdcb9e8784 
- py.path模块
			# https://py.readthedocs.io/en/latest/path.html import os dir_path = "/home/lw/" os.path.j ... 
- 【LeetCode栈与队列#03】删除字符串中所有的相邻重复项
			删除字符串中所有的相邻重复项 力扣题目链接(opens new window) 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们. 在 S 上反复执行重复项删除操作 ... 
- 【Filament】绘制圆形
			1 前言  Filament环境搭建中介绍了 Filament 的 Windows 和 Android 环境搭,绘制三角形中介绍了绘制纯色和彩色三角形,绘制矩形中介绍了绘制纯色和彩色矩形,本文将使用 ... 
- 机器学习策略篇:详解满足和优化指标(Satisficing and optimizing metrics)
			满足和优化指标 要把顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,发现有时候设立满足和优化指标是很重要的,让我告诉是什么意思吧. 假设已经决定很看重猫分类器的分类准确度,这可以是\( ... 
- X86模拟龙芯与编译 .NET CoreCLR
			目录 .NET 收到一台龙芯机器 编译 CoreCLR 环境要求 部署虚拟机与环境 Linux 安装 KVM 下载需要的文件 启动模拟器 下载 CoreCLR 尝试编译 CoreCLR 前段时间得知龙 ... 
- Java  封装性的小练习
			1 package com.bytezero.test2; 2 3 public class Person 4 { 5 private int age; 6 7 public void setAge( ... 
- Redis 常见数据类型(对象类型)和应用案列
			前言: 每次你在游戏中看到玩家排行榜,或者在音乐应用中浏览热门歌单,有没有想过这个排行榜是如何做到实时更新的?当然,依靠 Redis 即可做到. 在技术领域,我们经常听到「键值存储」 这个词.但在 R ... 
- 『Java 语法基础』面向对象有哪些特性
			面向对象编程(OOP) 是一个将现实世界抽象为一系列对象的编程范式,这些对象通过消息传递机制来互相交流和协作. OOP 的主要特性包括四个基本概念:封装(Encapsulation).继承(Inher ... 
- chrome 快速执行 snippets 1. F12 2. Ctrl+Shift+P 3. show snippets 4. 上下选择 5. Ctrl + Enter
			chrome 快速执行 snippets F12 Ctrl+Shift+P show snippets 上下选择 Ctrl + Enter 
