简单题。

考虑贪心地进行修改,每次选择字符串中最左侧第一个 000,并以该位置为左端点进行一次修改,可以发现若 lenlenlen 合法则这样一定构造出全 111 串。

然而直接暴力实现是 O(n2)O(n^2)O(n2) 的,但是发现每次选择的 000 的位置一定是递增的,且一个位置在若干次修改后是否为 000 仅与其初始值与该位置被修改次数(即被区间覆盖次数)有关,于是考虑在顺序枚举位置并进行区间修改时,差分维护每个位置被修改次数即可判断某个位置是否需要被修改。

单次检查时间复杂度变为 O(n)O(n)O(n) 级别,总时间复杂度 O(n2)O(n^2)O(n2) 级别。

AC code

#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e4+5;
int n,d[maxn];
string s;
bool check(int len){
memset(d,0,sizeof(d));
for(int i=0;i<n;i++){
d[i]=d[i]+d[i-1];
int tmp=s[i]-'0';
if(d[i]%2==1){
tmp^=1;
}
if(tmp==0){
if(i<=n-len){
d[i]++;
d[i+len]--;
}
else{
return 0;
}
}
}
return 1;
}
signed main(){
int t;
cin>>t;
while(t--){
cin>>n>>s;
for(int i=n;i>=1;i--){
if(check(i)){
cout<<i<<endl;
break;
}
}
}
return 0;
}

题解:CF1955E Long Inversions的更多相关文章

  1. HDU 6318 Swaps and Inversions(归并排序 || 树状数组)题解

    题意:一个逆序对罚钱x元,现在给你交换的机会,每交换任意相邻两个数花钱y,问你最少付多少钱 思路:最近在补之前还没过的题,发现了这道多校的题.显然,交换相邻两个数逆序对必然会变化+1或者-1,那我们肯 ...

  2. codeforce E - Binary Inversions题解

    题目: 给你一个01串,现在你可以(或者不用)选取其中一个元素进行一次反转操作0-1,1-0:从而使得串中的逆序对个数最多. 题目链接:codeforce origin problem 思路: 1. ...

  3. 算法(第四版)C# 习题题解——2.5

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更方便的版本见:https ...

  4. 算法(第四版)C# 习题题解——2.2

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更为方便的版本见:http ...

  5. HDU 6318 - Swaps and Inversions - [离散化+树状数组求逆序数][杭电2018多校赛2]

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=6318 Problem Description Long long ago, there was an ...

  6. LeetCode All in One题解汇总(持续更新中...)

    突然很想刷刷题,LeetCode是一个不错的选择,忽略了输入输出,更好的突出了算法,省去了不少时间. dalao们发现了任何错误,或是代码无法通过,或是有更好的解法,或是有任何疑问和建议的话,可以在对 ...

  7. 【agc023E】Inversions(线段树,动态规划)

    [agc023E]Inversions(线段树,动态规划) 题面 AT 给定\(a_i\),求所有满足\(p_i\le a_i\)的排列\(p\)的逆序对数之和. 题解 首先如何计算排列\(p\)的个 ...

  8. 【AtCoder】AGC023 A-F题解

    可以说是第一场AGC了,做了三道题之后还有30min,杠了一下D题发现杠不出来,三题滚粗了 rating起步1300+,感觉还是很菜... 只有三题水平显然以后还会疯狂--啊(CF的惨痛经历) 改题的 ...

  9. HDU 多校对抗赛第二场 1010 Swaps and Inversions

    Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  10. codeforces 301 E. Infinite Inversions

    题目:   time limit per test 2 seconds memory limit per test 256 megabytes input standard input output ...

随机推荐

  1. react之state两种不同的写法

    我发现 state 有两种不同的写法 在构造器 constructor 中是这样的 有 this. constructor(props){//参数必须要有 super(props); this.sta ...

  2. Kali 修改root密码

    Kali 修改root密码 进入 Kali 系统,切换 root 用户 sudo su 输入当前用户密码 成功切换到 root 用户后,进行修改密码 passwd root

  3. linux安装Phoenix

    1.下载对应hbase的版本 http://www.apache.org/dyn/closer.lua/phoenix/ 解压后找到phoenix-4.14.2-HBase-1.4-server.ja ...

  4. FLink14--核心窗口--TumblingWindiwApp

    一.依赖 https://www.cnblogs.com/robots2/p/16048648.html 二. 代码 前言:window用作有keyBy情况,前面没有使用keyBy的话用windowA ...

  5. Calcite 获取jdbc连接流程

    一.类调用 简介:calcite可以连接各数据源,做查询.可以收口查询权限,查询多引擎需求 二. 获取Connection发送的请求 请求介绍文档:https://calcite.apache.org ...

  6. USACO24DEC 2D Conveyer Belt S [ 蓝 ] [ 图论建模 ] [ Flood Fill ]

    2D Conveyer Belt:图论建模+洪水填充妙妙题.质量极高. 观察 首先面对这种不断往图里面加点或者边,且满足前面的答案可以由加边后推出的题,第一个想到的就得是倒序枚举加边过程的 trick ...

  7. RabbitMQ(六)——路由模式

    RabbitMQ系列 RabbitMQ(一)--简介 RabbitMQ(二)--模式类型 RabbitMQ(三)--简单模式 RabbitMQ(四)--工作队列模式 RabbitMQ(五)--发布订阅 ...

  8. sql server 新建用户数据库授权

    必须对数据库进行 db_owner 授权.

  9. 来自deepseek:php禁止跨域请求

    在PHP中,禁止API被跨域调用可以通过设置HTTP响应头来实现.跨域资源共享(CORS,Cross-Origin Resource Sharing)是一种机制,允许浏览器从不同域名的服务器请求资源. ...

  10. 在php类中使用函数

    好久没更新了,今天复习歪麦编写php框架的文章,看到几个函数,在类中使用时,当参数需要调用类的方法时,都用数组的方式传参. 1.  spl_autoload_register(array($this, ...