Luogu P11361 NOIP2024 编辑字符串 题解 [ 黄 ] [ 贪心 ]
编辑字符串:这题能评蓝已经说明了洛谷的唐氏。
结论
找到两个字符串种连续的且可以移动的所有极大子区间,然后线性扫一遍,看这一位所处的子区间中有多少个 \(0\) 和 \(1\),两个都有 \(0\) 就先消 \(0\),否则如果两个都有 \(1\) 就把 \(1\) 消掉,就做完了。
时间 \(O(Tn)\)。
证明
洛谷上有一种很妙的证明,借鉴一下。
这题的答案显然是:
\]
\]
\]
显然 \(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 编辑字符串 题解 [ 黄 ] [ 贪心 ]的更多相关文章
- luogu P3709 大爷的字符串题
二次联通门 : luogu P3709 大爷的字符串题 /* luogu P3709 大爷的字符串题 莫队 看了半天题目 + 题解 才弄懂了要求什么... 维护两个数组 一个记录数字i出现了几次 一个 ...
- 最长重复字符串题解 golang
最长重复字符串题解 package main import ( "fmt" "strings" ) type Index map[int]int type Co ...
- luogu P1126 机器人搬重物 题解
luogu P1126 机器人搬重物 题解 题目描述 机器人移动学会(\(RMI\))现在正尝试用机器人搬运物品.机器人的形状是一个直径\(1.6\)米的球.在试验阶段,机器人被用于在一个储藏室中搬运 ...
- [CQOI2012]模拟工厂 题解(搜索+贪心)
[CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...
- 【luogu P3709 大爷的字符串题】 题解
题目链接:https://www.luogu.org/problemnew/show/P3709 离散化+区间众数..? #include <iostream> #include < ...
- Codeforces724D [字符串][乱搞][贪心]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意:给你一个区间长度n和一个字符串,要求在字符串中选择一些symbol使得字符串的任意长度为n的子区间都存在至少一个symbol. 任意选取symbol ...
- D、CSL 的字符串 【栈+贪心】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)
题目传送门:https://ac.nowcoder.com/acm/contest/551#question 题目描述 CSL 以前不会字符串算法,经过一年的训练,他还是不会……于是他打算向你求助. ...
- [SCOI2010]生成字符串 题解(卡特兰数的扩展)
[SCOI2010]生成字符串 Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数 ...
- 【luogu P2491 [SDOI2011]消防】 题解
题目链接:https://www.luogu.org/problemnew/show/P2491 题外话: OI一共只有三种题--会的题,不会的题,二分题. 题解: step 1 求树的直径,把树的直 ...
- 洛谷 P4269 / loj 2041 [SHOI2015] 聚变反应炉 题解【贪心】【DP】
树上游戏..二合一? 题目描述 曾经发明了零件组装机的发明家 SHTSC 又公开了他的新发明:聚变反应炉--一种可以产生大量清洁能量的神秘装置. 众所周知,利用核聚变产生的能量有两个难点:一是控制核聚 ...
随机推荐
- 光猫HS8145V6命令一部分(一)
天翼网关说明书-HS8145V6( PON ONT ),快速入门指南 开启telnet, 登录(用户名root,密码adminHW)后可知一些命令 (部分敏感信息已替换) WAP>display ...
- Educational Codeforces Round 90 (Rated for Div2)
Donut Shops 现在有两个超市,第一个超市的物品按件卖,每件商品的售价为\(a\)元:第二个超市的物品按箱卖,每箱有\(b\)件物品,每箱售价为\(c\)元,现在要让你买\(x\)和\(y\) ...
- 使用CANAL同步数据
1.概要 canal 是阿里发布的一个mysql 同步工具,它是模拟 mysql slave 的方式读取binlog,并可以将数据写入到队列中. 如下图:是官方提供的架构图. 2.下载CANAL 下载 ...
- element-ui el-dialog中套el-dialog被遮罩遮盖的问题
添加 append-to-body 属性 具体见官方文档 入口
- MeteoInfo-Java解析与绘图教程(二)
MeteoInfo-Java解析与绘图教程(二) 上节说到了数据的简单解析,这节则说简单绘图 绘图的前置最重要的就是GridData,有了它,基本可以直接绘制出来 例如我们先放弃简单的自定义绘图的操作 ...
- eShopOnContainer 中 unauthorized_client error 登录错误处理
在准备好 eShopOnContainer 环境,运行起来之后,不幸的是,我遇到了不能登录的错误. 从错误信息中,可以看到 unauthorized_client 的内容.这是为什么呢? 从 eSho ...
- 在 IdentityServer4 中创建客户端
创建客户端 在创建了 IdentityServer4 服务器之后,我们可以准备从获取一个访问令牌开始. 1. 客户端凭证式验证流 在 OpenID Connect 中,最为简单的验证方式为客户端凭借方 ...
- 简单软件架构的一些好处zz
简单软件架构的一些好处_大数据_Dan Luu_InfoQ精选文章 Wave 是一家价值 17 亿美元的公司,拥有 70 名工程师,该公司的产品是一款加减数字的 CRUD 应用程序.为了与此保持一致, ...
- 在docker中使用主机串口通讯
在进行软件docker化的过程时,很大的一个阻碍就是软件与各种外围硬件设备的交互,网口通信的设备能够很容易地接入容器,但是串口设备则要复杂一些.本文讨论在windows和linux下docker容器使 ...
- Qt/C++开发经验小技巧306-310
远程过很多人电脑远程分析问题,发现一个通病,比如明明修改了某个数据库或者配置文件,结果运行程序一看,还是旧的数据,死活都不行,查了半天程序,始终找不到问题所在.最终查到原来是程序读取的文件根本不是修改 ...