首页 > 其他分享 >CF1849C Binary String Copying

CF1849C Binary String Copying

时间:2023-07-29 20:12:56浏览次数:45  
标签:Binary String int scanf -- Copying include ss

Link

我们想一下,什么时候两种变换是相同的
或者说,这意味着什么。
本题目有特殊性,特殊性就在于只有0和1
对于每一个被改变的区间\([L_i,r_I]\),从\(l_i\)开始的那一堆0,和从\(r_i\)开始的那一堆1都没变。
所以变化的部分就要从从左往右第一个1,和从右往左第一个0开始算。
这个东西可以预处理出来,然后用set去重就可以了

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<ctime>
#include<bitset>
using namespace std;
int t;
int n,m;
string ss;
set<pair<int,int> > s;
int l[200005];
int r[200005];
int x,y;
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&n,&m);
		cin>>ss;
		s.clear();
		l[0]=-1;
		r[n-1]=n;
		for(int i=1;i<n;++i){
			l[i]=(ss[i]=='0'?i:l[i-1]);
		}
		for(int i=n-2;i>=0;--i){
			r[i]=(ss[i]=='1'?i:r[i+1]);
		}
		while(m--){
			scanf("%d%d",&x,&y);
			int ll=l[y-1];
			int rr=r[x-1];
			if(ll<rr)
			s.insert({-1,-1});
			else{
				s.insert({ll,rr});
			}
		}
		cout<<s.size()<<endl;
	}
	return 0;
}

标签:Binary,String,int,scanf,--,Copying,include,ss
From: https://www.cnblogs.com/For-Miku/p/17590376.html

相关文章

  • String(续)
    一、String类表示字符串的类,其中定义了很多操作字符串的方法二、StringBuilder一个可变的操作字符串的容器可以高效地拼接字符串,还可以将容器中的内容反转三、StringJoiner可以高效、方便的拼接字符串用到的参数:(间隔符号,开始符号,结束符号)(间隔符号)......
  • JSON.toJSONString将key变成了首字母小写的问题
    在一些请求接口传参时,往往需要把请求参数转为JSON字符串,但JSON.toJSONString会默认将key的首字母变小写的问题importlombok.Data;@Datapublicclasstest{privateLongId;}Testparams=newTest();params.setId(11);JSON.toJSONString(params);System.out.pri......
  • 能在 Switch 中使用 String 吗?
    从Java7开始,我们可以在switchcase中使用字符串,但这仅仅是一个语法糖。内部实现在switch中使用字符串的hashcode。   在Java7中,switch开始支持String类型。 从本质来讲,switch对字符串的支持,其实是int类型值得匹配。 其实现原理为:通过对case后面的String对......
  • String转Map java
    String转Mapjava实现步骤1.理解需求在开始编写代码之前,我们需要明确我们的需求是什么。在这个任务中,我们需要将一个字符串转换为一个Java中的Map对象。字符串的格式可能是键值对的形式,比如"key1=value1;key2=value2",我们需要将其转变为一个Map对象,其中键是字符串中的键名,而值是......
  • String mobleCode = redisTemplate.opsForValue().get(phone);
    使用RedisTemplate获取手机验证码在现代的应用程序中,手机验证码被广泛用于用户身份验证和安全验证。使用手机验证码可以确保用户提供的手机号是有效的,并且可以防止恶意行为。在本文中,我们将介绍如何使用SpringDataRedis中的RedisTemplate来获取手机验证码。RedisTemplate简介R......
  • C# string.format格式说明
    stringstr1=string.Format("{0:N1}",56789);//result:56,789.0stringstr2=string.Format("{0:N2}",56789);//result:56,789.00stringstr3=string.Format("{0:N3}",56789);//result:56,78......
  • java string判断包含字符个数
    JavaString判断包含字符个数在Java中,要判断一个字符串中包含特定字符的个数,我们可以使用以下步骤来实现。流程概述步骤描述步骤1提示用户输入字符串步骤2提示用户输入要判断的字符步骤3使用循环遍历字符串的每个字符步骤4判断当前字符是否与要判断的字符......
  • java queryStringQuery
    了解Java中的queryStringQuery在Java编程中,我们经常需要通过搜索功能来查询和过滤数据。Elasticsearch是一个流行的搜索引擎,它提供了强大的全文搜索功能。在Elasticsearch中,我们可以使用queryStringQuery来执行基于字符串的查询。queryStringQuery是什么?queryStringQuery是Elast......
  • String类|笔记1(复习)
    由于字符串应用广泛,Java中专门提供了面向字符串对象的String类。1、字符串常用的构造方法 2、String对象的比较在讨论String对象的比较时,先看看String类的引用机制。创建对象S1,S2,S3,虚拟机栈中分别存储指向堆区的引用对象的地址,S1和S3指向相同的引用对象,S3指向不同的引用对象......
  • ubuntu下gvim启动出现gtk warning Invalid input string
    问题:安装Ubuntu10.04LucidLynx后,GVim无法正常显示中文菜单。错误信息:引用:Gtk-WARNING**:Invalidinputstring原因:Ubuntu10.04LucidLynx默认安装将会把中文区域设置为zh_CN.utf8,而GVim能识别的中......