首页 > 其他分享 >[ARC074E] RGB Sequence

[ARC074E] RGB Sequence

时间:2024-11-06 18:58:16浏览次数:1  
标签:ch 颜色 Sequence int rd ARC074E RGB define

原题链接

好题,记录一下。

首先若干个区间限制,根据套路,我们只在右端点统计信息。

因为只有三种颜色,再看数据范围,可以考虑三维 dp。

设 \(f_{i,j,k}\) 设前 \(i\) 个数,与 \(i\) 颜色不同的两种颜色的最后出现位置 \(j,k\),规定 \(j\ge k\)(\(j=k\) 当且仅当它们都没出现,此时 \(j=k=0\))。

然后我们可以很方便的判断该状态是否合法,若合法则刷表法更新信息。

为什么用刷表法?这样做的好处是我们的 \([l,i]\) 区间全部满足条件了,对于 \(i+1\) 颜色的选择就与现在无关。

转移方程比较显然,分 \(i+1\) 填三种颜色三种情况考虑。

最后答案记得 \(\times 3\),因为我们统计时只关心颜色的相同和不同,没有关心具体颜色。

#include<bits/stdc++.h>
using namespace std;
#define rd read()
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define ll long long
#define FOR(i,j,k) for(int i=j;i<=k;i++)
#define ROF(i,j,k) for(int i=j;i>=k;i--)
int read(){
	int x=0,f=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
	while(isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
	return x*f;
}
const int N=310,mod=1e9+7;
int MOD(int x){return x>=mod?x-mod:x;}
int n,m,f[N][N][N];
vector<PII> v[N];
int main(){
	n=rd,m=rd;FOR(i,1,m){int l=rd,r=rd,x=rd;v[r].pb(mp(l,x));}
	f[1][0][0]=1;
	FOR(i,1,n){
		for(auto t:v[i]){
			int l=t.fi,x=t.se;
			FOR(j,0,i-1){
				FOR(k,0,max(0,j-1)){
					if(x==1){if(l<=j) f[i][j][k]=0;}
					else if(x==2){if(j<l||l<=k) f[i][j][k]=0;}
					else if(x==3){if(k<l) f[i][j][k]=0;}
				}
			}
		}
		if(i==n) break;
		FOR(j,0,i-1) FOR(k,0,max(0,j-1)){
			if(!f[i][j][k]) continue;
			f[i+1][j][k]=MOD(f[i+1][j][k]+f[i][j][k]);
			f[i+1][i][k]=MOD(f[i+1][i][k]+f[i][j][k]);
			f[i+1][i][j]=MOD(f[i+1][i][j]+f[i][j][k]);
		}
	}
	int ans=0;
	FOR(j,0,n) FOR(k,0,max(0,j-1)) ans=MOD(ans+f[n][j][k]);
	ans=3ll*ans%mod;
	printf("%d\n",ans);
	return 0;
}

标签:ch,颜色,Sequence,int,rd,ARC074E,RGB,define
From: https://www.cnblogs.com/summ1t/p/18530853

相关文章

  • CCPC Final 2023 B. Periodic Sequence
    https://vjudge.net/problem/QOJ-8543给定\(n\),对于\(i=1,2,\ldots,n\)求出最长可能的周期字符串序列长度F(i),满足序列中字符串的长度\(≤i\)。一个字符串序列\(S_1,S_2,\ldots,S_l\)是周期字符串序列,当且仅当对于每个\(1≤i<l\)都满足\(S_i\)是\(S_{i+1}\)的周期......
  • PyTorchStepByStep - Chapter 9: Sequence-to-Sequence
     points,directions=generate_sequences(n=256,seed=13)Andthenlet’svisualizethefirstfivesquares:classEncoder(nn.Module):def__init__(self,n_features,hidden_dim):super().__init__()self.n_features=n_features......
  • E. Best Subsequence
    “最大权值闭合图,即给定一张有向图,每个点都有一个权值(可以为正或负或0),你需要选择一个权值和最大的子图,使得子图中每个点的后继都在子图中。”这样的定义可以让你理解算法执行的逻辑,却难以在你赛场上遇到它时牵动你的思绪更符合你做题时真切感受的描述应该是:给你一些点,消耗一些......
  • [ARC186E] Missing Subsequence 题解
    Description给定一个整数序列\(\left(X_1,\ldots,X_M\right)\),其长度为\(M\),元素取值为\(1,\ldots,K\)。要求找出长度为\(N\)的序列\((A_1,\ldots,A_N)\)的数量,元素取值为\(1,\ldots,K\),并满足以下条件,结果取模\(998244353\):在所有长度为\(M\)的序列中,唯......
  • Leetcode 3336. Find the Number of Subsequences With Equal GCD
    Leetcode3336.FindtheNumberofSubsequencesWithEqualGCD1.解题思路2.代码实现题目链接:3336.FindtheNumberofSubsequencesWithEqualGCD1.解题思路这一题没能自力搞定,挺伤心的,看大佬的代码之后发现思路上是一个非常暴力的动态规划,就是不断地考察每一......
  • [USACO17JAN] Subsequence Reversal P
    根据数据范围,不难想到DP状态应该是\(n^4\)级别的。先考虑当没有反转区间的操作时如何转移。设\(dp_{l,r,L,R}\)表示当前区间为\(l\simr\),值域\(\in[L,R]\)时的答案。转移时枚举四个维度,可以从\(dp_{l,r,L,R-1},dp_{l,r,L+1,R},dp_{l+1,r,L,R},dp_{l,r-1,L,R}\)转移......
  • Complete the Sequence 第一次做英文c++的题
    第一次接触全是英语的题,怎么会有这么难的呢?首先我拿起了它和中文的题目一对比,发现分成了5个板块,将这5个板块细细拆分后,了解到了大意,大意为输入n组数据,其中输入x个数,然后找出它的规律,输出接下来的y个数。比如一组数据,1、2、3、4、5、6,要输出剩下的数据,你肯定会不有毫不犹豫的回答......
  • [题解]P4552 [Poetize6] IncDec Sequence
    P4552[Poetize6]IncDecSequence我们对\(a\)做差分,得到数组\(b\)。\(a\)的区间修改,等价于选定\(i,j\in[1,n+1]\),令\(b[i]\leftarrow(b[i]+1),b[j]\leftarrow(b[j]-1)\),我们的目标是让\(b[2\simn]\)全为\(0\)。记\(x,y\)分别表示\(b[2\simn]\)中正数之和、负数的绝对值之和......
  • 2024牛客暑期多校训练营9 B.Break Sequence
    设\(f_i\)表示最后一个区间以\(a_i\)结尾的方案总数,也即前\(i\)个数的方案总数。最后的答案是\(f_n\)。很容易得到转移方程:\[f_i=\sum_{j=1}^{i-1}f_j\]其中,需要保证\(a_i\sima_j\)是一个合法区间才能累加,这个检查的过程可以通过\(j\)倒序并计算不合法的数的个......
  • 题解:P10977 Cut the Sequence
    题目传送门分析看到这种题就可以想到动态规划,先设状态:$f_i$表示考虑前$i$个数,所需要的最小代价。发现$f_i$可以从所有$i$以前的状态加后一段区间转移过来,于是可以列出状态转移方程:$$f_i=\min_{j=i-1}^{s_i-s_j\leqm}(f_j+\max_{k=j+1}^i)$$其中$j$......