编辑字符串:这题能评蓝已经说明了洛谷的唐氏。

结论

找到两个字符串种连续的且可以移动的所有极大子区间,然后线性扫一遍,看这一位所处的子区间中有多少个 \(0\) 和 \(1\),两个都有 \(0\) 就先消 \(0\),否则如果两个都有 \(1\) 就把 \(1\) 消掉,就做完了。

时间 \(O(Tn)\)。

证明

洛谷上有一种很妙的证明,借鉴一下。

这题的答案显然是:

\[n-\sum_{i=1}^{n}(a_i-b_i)^2=n-(\sum_{i=1}^{n}(a_i^2+b_i^2-2a_ib_i))
\]
\[=n-(\sum_{i=1}^{n}a_i^2+\sum_{i=1}^{n}b_i^2-\sum_{i=1}^{n}2a_ib_i)
\]
\[=n-\sum_{i=1}^{n}a_i^2-\sum_{i=1}^{n}b_i^2+\sum_{i=1}^{n}2a_ib_i
\]

显然 \(n\) 与 \(\sum_{i=1}^{n}a_i^2\) 与 \(\sum_{i=1}^{n}b_i^2\) 已经是定值,那么我们要最大化 \(\sum_{i=1}^{n}2a_ib_i\),就要把 \(a_i,b_i\) 先全部放 \(1\)。

由于这题 \(0\) 与 \(1\) 具有对称性,所以先全部放 \(0\) 也是对的。

代码

代码也不难写,考场上 10min 打完的,思路也就想了 10min,还包括手模样例的时间。

这题做出来不能说明强,但是真正强的绝对会这题,那些自称强的还做不出来的纯属基础不牢,菜就多练。天天升升升的升你妈呢。

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int n,cnta,cntb,bla[100005],blb[100005],tota[100005][2],totb[100005][2],ans;
bitset<100005>a,b,ta,tb;
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)
{
char x;
cin>>x;
a[i]=(x-'0');
}
for(int i=1;i<=n;i++)
{
char x;
cin>>x;
b[i]=(x-'0');
}
cnta=0;
for(int i=1;i<=n;i++)
{
char x;
cin>>x;
ta[i]=(x-'0');
if(ta[i]!=ta[i-1]||ta[i]==0)cnta++;
bla[i]=cnta;
}
cntb=0;
for(int i=1;i<=n;i++)
{
char x;
cin>>x;
tb[i]=(x-'0');
if(tb[i]!=tb[i-1]||tb[i]==0)cntb++;
blb[i]=cntb;
}
memset(tota,0,sizeof(tota));
memset(totb,0,sizeof(totb));
for(int i=1;i<=n;i++)
{
tota[bla[i]][a[i]]++;
totb[blb[i]][b[i]]++;
}
ans=0;
for(int i=1;i<=n;i++)
{
if(tota[bla[i]][0]>0&&totb[blb[i]][0]>0)
{
ans++;
tota[bla[i]][0]--;
totb[blb[i]][0]--;
}
else if(tota[bla[i]][1]>0&&totb[blb[i]][1]>0)
{
ans++;
tota[bla[i]][1]--;
totb[blb[i]][1]--;
}
}
cout<<ans<<'\n';
}
int main()
{
freopen("edit.in","r",stdin);
freopen("edit.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)solve();
return 0;
}

Luogu P11361 NOIP2024 编辑字符串 题解 [ 黄 ] [ 贪心 ]的更多相关文章

  1. luogu P3709 大爷的字符串题

    二次联通门 : luogu P3709 大爷的字符串题 /* luogu P3709 大爷的字符串题 莫队 看了半天题目 + 题解 才弄懂了要求什么... 维护两个数组 一个记录数字i出现了几次 一个 ...

  2. 最长重复字符串题解 golang

    最长重复字符串题解 package main import ( "fmt" "strings" ) type Index map[int]int type Co ...

  3. luogu P1126 机器人搬重物 题解

    luogu P1126 机器人搬重物 题解 题目描述 机器人移动学会(\(RMI\))现在正尝试用机器人搬运物品.机器人的形状是一个直径\(1.6\)米的球.在试验阶段,机器人被用于在一个储藏室中搬运 ...

  4. [CQOI2012]模拟工厂 题解(搜索+贪心)

    [CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...

  5. 【luogu P3709 大爷的字符串题】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3709 离散化+区间众数..? #include <iostream> #include < ...

  6. Codeforces724D [字符串][乱搞][贪心]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意:给你一个区间长度n和一个字符串,要求在字符串中选择一些symbol使得字符串的任意长度为n的子区间都存在至少一个symbol. 任意选取symbol ...

  7. D、CSL 的字符串 【栈+贪心】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)

    题目传送门:https://ac.nowcoder.com/acm/contest/551#question 题目描述 CSL 以前不会字符串算法,经过一年的训练,他还是不会……于是他打算向你求助. ...

  8. [SCOI2010]生成字符串 题解(卡特兰数的扩展)

    [SCOI2010]生成字符串 Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数 ...

  9. 【luogu P2491 [SDOI2011]消防】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2491 题外话: OI一共只有三种题--会的题,不会的题,二分题. 题解: step 1 求树的直径,把树的直 ...

  10. 洛谷 P4269 / loj 2041 [SHOI2015] 聚变反应炉 题解【贪心】【DP】

    树上游戏..二合一? 题目描述 曾经发明了零件组装机的发明家 SHTSC 又公开了他的新发明:聚变反应炉--一种可以产生大量清洁能量的神秘装置. 众所周知,利用核聚变产生的能量有两个难点:一是控制核聚 ...

随机推荐

  1. VUE 改成history 模式 刷新404 的问题

    vue 路由的URL有两种模式,一种是 hash,一种是history ,history 模式更好看一些. 在使用hisory模式时,由于地址并不是真实存在,那么在刷新的情况下,这个会报404错误. ...

  2. InstallShield软件详解

    InstallShield使用说明 文章目录 InstallShield使用说明 术语解释 工程介绍 InstallScript Basic MSI InstallScript MSI 如何选择适合的 ...

  3. DB-GBP功能使用探索

    目录 1.DBGPT支持的功能 2.配置StarRocks数据库 3. ChatBI 4. APP创建使用 5. 元数据库配置 6. API 调用探索 6.1 app 6.2 datasources ...

  4. django连接数据库与orm基础知识

    目录 一.django连接数据库 二.pycharm连接MySQL数据库 三.ORM简介 1.ORM概念 2.ORM由来 3.ORM的优势和劣势 ORM的优势 ORM的劣势 四.ORM基本操作 1.现 ...

  5. Spark内存调优

    一.概述Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优.本文旨 ...

  6. 一场因OpenJDK引发的血案 之JavaFx

    https://zhuanlan.zhihu.com/p/103765203 案发现场 最近做了个项目,本地调试通过了,可在服务器上部署时却编译失败,报错如下 编译失败的原因是缺少javafx.uti ...

  7. Socket、Http、WebSocket?强大的Netty几行语句就帮你实现!

    一.概述 Netty是目前最流行的由JBOSS提供的一个Java开源框架NIO框架,Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 相比 ...

  8. Linux 虚拟机重启找不到IP解决方案

    @ 目录 前言 简介 Linux 操作系统查看不到IP地址 问题描述: 第一步 :修改配置 第二步 :查看ip 第三步 :查看网卡 第四步 :重启网络 ‌Linux 网络服务重启失败解决办法 问题描述 ...

  9. Qt编写地图综合应用30-世界地图

    一.前言 世界地图也属于区域地图的一种,最开始做项目的时候只有国内的地图需求,后面有个客户他们的产品是面向国际市场,所以在大屏展示的时候,必须展示一张世界地图,所有箭头动态流向中国,当然这些都要离线使 ...

  10. 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

    Navicat导出的MySQL8.0脚本在低版本MySQL导入执行报错 utf8mb4_0900_ai_ci 替换 utf8_general_ci utf8mb4 替换 utf8 完成以上两点替换再次 ...