1600*C. Binary String Copying

https://codeforces.com/problemset/problem/1849/C

Binary String Copying - 洛谷

解析:

对于某个区间x,y,他排序之后,最左侧的连续0和最右侧的连续1是不影响排序结果的。

假设左侧连续a个0,右侧b个1,那么对于 x,y排序,和对于x+a,y-b排序是一样的。

所以我们记录每个位置最近的右侧1的坐标和最左侧的0的坐标,每次将范围映射到更小的唯一区间里里面即可。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
int t,n,m,a[N],l[N],r[N],k;
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&n,&m);
		k=0;
		for(int i=1;i<=n;i++){
			scanf("%1d",&a[i]);
			if(a[i]==0) k=i;
			l[i]=k;
		}
		k=n+1;
		for(int i=n;i>=1;i--){
			if(a[i]==1) k=i;
			r[i]=k;
		}
		set<pair<int,int>>res;
		for(int i=1;i<=m;i++){
			int x,y;
			scanf("%d%d",&x,&y);
			x=r[x];
			y=l[y];
			if(x>y) x=1,y=1;
			res.insert({x,y});
		}
		printf("%d\n",res.size());
	}
	return 0;
}
相关推荐
波力海苔夹心脆67511 分钟前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
2601_9628857224 分钟前
如何用 Python 计算 BBI 多空指标?
开发语言·python
Tisfy28 分钟前
LeetCode 0301.删除无效的括号:二进制枚举 / 回溯
算法·leetcode·字符串·题解·回溯·括号匹配·二进制枚举
Nil20836 分钟前
leetcode 322零钱兑换
算法·leetcode·职场和发展
老王爱玩车39 分钟前
动态内存管理
c语言·开发语言·学习·面试
海绵宝宝转agent40 分钟前
2026-10-9 leetcode100刷题+面经整理
笔记·算法·面试
I'm Jie1 小时前
【开源】7 天,我用 Rust 复刻了 FinalShell!Rhost v1.0.0 发布
开发语言·rust·开源
yi0111 小时前
DAY24: LeetCode 167:两数之和 II|从暴力枚举到左右双指针
笔记·python·算法·leetcode·二分查找·双指针
木井巳1 小时前
【BFS 解决拓扑排序】课程表
java·算法·leetcode·广度优先·宽度优先·推荐算法·图搜索算法
kimnoic1 小时前
Python常用命令提示符使用方法详解
开发语言·python