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 又公开了他的新发明:聚变反应炉--一种可以产生大量清洁能量的神秘装置. 众所周知,利用核聚变产生的能量有两个难点:一是控制核聚 ...
随机推荐
- linux故障排查工具之dmesg
dmesg命令是用来在Unix-like系统中显示内核的相关信息的.dmesg全称是display message (or display driver),即显示信息. 实际上,dmesg命令是从内核 ...
- Python之pandas操作
中文网:https://www.pypandas.cn/ Pandas 是 Python 的核心数据分析支持库,提供了快速.灵活.明确的数据结构,旨在简单.直观地处理关系型.标记型数据.Pandas ...
- python之模拟数据Faker
Faker,它解决的问题是python模拟(随机)数据!不知道大家在工作中没有用到过假数据,特别前后端开发的人员,应该经常用到,前端人员页面展示,效果展示.后端人员数据库数据模拟.今天给大家介绍的这个 ...
- Javascript 标签的属性
1.为HTML标签设置和添加属性 setAttribute() setAttribute()方法可以给HTML标签设置/添加属性(原生的属性或者自定义的属性都可以)添加的属性会存储在标签中 <! ...
- 编译器-FIRST集合(补充:左递归)
上一篇中实现的First函数没有考虑左递归,在这对此说明和实现 1.立即左递归 A -> Ab|a 1.两步或两步以上产生的左递归 A -> Bc|a B -> Ab|d 前面的实现 ...
- GraphRAG+文档结构:打造高性能实体溯源方案
作者:陈梓康 众所周知,GraphRAG将文档内容抽取为知识图谱三元组后,实际上仅保留了关联性知识信息,因此不可避免地会丢失原文的一些内容细节.在对数据完整度要求严格的业务场景,如金融.医疗.保险等行 ...
- 在TOMCAT8.5使用 JOSSO 单点登录(Agent 端)
网上找到的玩法都是用 josso 给的命令行工具加工 tomcat,这个办法有不少问题: 1. tomcat8.5 还不支持 2. 很难配置,这让我险些放弃 tomcat8.5,用 tomcat8,但 ...
- PostgreSQL 的历史
title: PostgreSQL 的历史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功 ...
- Xshell无法连接22端口问题解决办法汇总
Xshell软件在进行远程连接过程中,会出现端口连接报错的问题,提示:"该IP地址的22端口连接失败",这是怎么回事?今天小编就xshell软件无法连接22端口的问题,整理相关情形 ...
- linux shell移植,sh不支持数组及bash移植
查看此时系统shell ls -al /bin/sh Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bou ...