首页 > 其他分享 >CF round 979 div2(D-E)

CF round 979 div2(D-E)

时间:2024-10-21 11:42:32浏览次数:8  
标签:cnt jud int CF long cin 979 using div2

D

容易观察到需要连续一段区间。这不单点修改区间查询,然后我思维就开始往线段树飘了。。。并且我到这里就以为做完了开始想实现,实际上性质都没观察准确。。
但是因为这是一个1500的题所以显然有不用线段树的解。题解是差分做的,确实差分也可以操作区间
观察到“LR”一定是隔断点,那么我们可以维护非法的隔断点数并用cnt统计,这就使维护只影响到相邻位置
最后要考虑的就是如何分区间(到这里又开始混乱),分割区间条件设为当前最大值等于i,也就是说小的数都在前面了不影响后面
然后就做完了
差分的话就是说前面对后面累计影响为0的时候就可以分割区间

#include <bits/stdc++.h>
const int maxn = 2e5+10, mod = 1e9+7;
using namespace std;
#define int long long
#define double long double
using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;
#define lowbit(x) (x&(-x))
int n,k,a[maxn],check[maxn];
string s;
int jud(int x){
	if(!check[x]&&s[x]=='L'&&s[x+1]=='R')return 1;
	return 0;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t;cin>>t;while(t--){
		int n,q;cin>>n>>q;
		
		for(int i=1;i<=n;i++){
			cin>>a[i];check[i]=0;
		}
		cin>>s;s='1'+s+'R';
		int cnt=0;
		for(int i=1,mx=0;i<=n;i++){
			mx=max(mx,a[i]);
			if(mx==i)check[i]=1;
			cnt+=jud(i);
		}
		while(q--){
			int x;cin>>x;
			cnt-=(jud(x-1)+jud(x));
			s[x]=(s[x]=='L')?'R':'L';
			cnt+= (jud(x-1)+jud(x));
			if(cnt==0)cout<<"yes"<<endl;
			else cout<<"NO"<<endl;
		}
	}
}

E

计数题。

标签:cnt,jud,int,CF,long,cin,979,using,div2
From: https://www.cnblogs.com/lyrrr/p/18489147

相关文章

  • Day10 备战CCF-CSP练习
    Day10题目描述十滴水是一个非常经典的小游戏。小\(C\)正在玩一个一维版本的十滴水游戏。我们通过一个例子描述游戏的基本规则。游戏在一个$1×c$的网格上进行,格子用整数$x(1≤x≤c)$编号,编号从左往右依次递增。网格内\(m\)个格子里有\(1∼4\)滴水,其余格子里没有......
  • Codeforces Round 979 div2 个人题解(A~E)
    CodeforcesRound979div2个人题解(A~E)Dashboard-CodeforcesRound979(Div.2)-Codeforces火车头#define_CRT_SECURE_NO_WARNINGS1#include<algorithm>#include<array>#include<bitset>#include<cmath>#include<cstdio>#inc......
  • CF2030G
    很厉害的数数题。首先我们自然考虑固定方案如何计算答案。考虑最左边的区间\([l_1,r_1]\)和最右边的区间\([l_2,r_2]\),如果有交点,那么所有区间一定都有交点,否则我们计算一下把这两个区间碰到一起需要多少代价,不难发现是\(l_2-r_1\),然后删去这两个区间,递归下去。然后可以自......
  • 对于 CF,AT,CSP-S,NOIP,我想说
    尽管我是div2一题水平,但是......
  • Codeforces Round 979 (Div. 2) C. A TRUE Battle
    题目链接:题目大意:Alice和Bob先后轮流向一串01字符串中加入or或and,前者想让结果为1后者想让结果为0,问Alice能不能赢。思路:对于相同的两个布尔值,or和and都不能改变它们,而对于Alice,他倾向于向01之间加入or,Bob则想加入and。一开始我想比较1和0的多少不就行了吗,但是不对,当你......
  • Codeforces Round 979 (Div. 2) B. Minimise Oneness
    题目链接:题目大意:构造长度为nnn的01字符串,使得全为零的子序列和至少有一个1的子序列的数量之差的绝对值最小。思路:很明显,所有子序列中不是全为0就是至少有一个1,所以算......
  • Solution of CF1842C
    Briefdescriptionofthetitle若\(a_i=a_j\)且\(1\lei<j\le|a|\)。则删除\(a_{i}\)到\(a_j\)所有数。求出能删除数列中的数的最大数量。Solution考虑动态规划:状态:\(f_i\)表示前\(i\)个数里面最多能删除多少个数。\(maxn_{a_i}\)表示对于数\(a_i\),满足\(a......
  • CF1187E 题解
    Titletranslation给定一棵\(n\)个点的树,初始全是白点。要做\(n\)步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点,求可获得的最大权值。Solution如何让这道题秒降绿题呢?先简化一......
  • CF1793E
    \(\text{Problem-1793E-Codeforces}\)\(\text{*2600}\)备注2024.10.19考试T2。考场未能想出正解,找到性质但没有根据性质往dp方面想,而是想通过多枚举状态找最优解,需要反思!简要题意有一个数列\(A\),我们需要将其分成若干组。对于一个\(i\),若\(i\)所在的分组中元素个......
  • Day9 备战CCF-CSP练习
    Day9题目描述在学习了文本处理后,小\(P\)对英语书中的\(n\)篇文章进行了初步整理。具体来说,小\(P\)将所有的英文单词都转化为了整数编号。假设这\(n\)篇文章中共出现了\(m\)个不同的单词,则把它们从\(1\)到\(m\)进行编号。这样,每篇文章就简化为了一个整数序列,其中......