当前位置: 首页 > news >正文

题解:P14015 [ICPC 2024 Nanjing R] 生日礼物

更差的阅读体验


经典套路,我个人认为是橙题。

相邻相等不好刻画,我们直接把偶数位置反转,这样一组相邻相等中恰好有一个被反转,变成删除相邻不同。

那么假设没有 \(2\),最终序列中一定只有 \(0\)\(1\)。所以假设 \(0,1\) 个数分别是 \(c_0, c_1\),那么由于一次消除一个 \(0\) 一个 \(1\),所以答案是 \(|c_0 - c_1|\)

\(2\) 之后,其实也不用推式子,直接枚举 \(c_2\)\(2\) 几个分给 \(0\) 几个分给 \(1\) 就行了。

那么这道题就做完了,复杂度 \(O(T|A|)\)

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define N 500006
using namespace std;
int T,n,ans;
char ch[N];
vector<int> cnt(3);
main()
{scanf("%lld",&T);while(T--){scanf("%s",ch+1),n=strlen(ch+1),cnt={0,0,0},ans=1e15;for(int i=2;i<=n;i+=2)if(ch[i]=='0')ch[i]='1';else if(ch[i]=='1')ch[i]='0';for(int i=1;i<=n;i++)cnt[ch[i]^48]++;for(int i=0;i<=cnt[2];i++)ans=min(ans,abs(cnt[0]+i-cnt[1]-(cnt[2]-i)));printf("%lld\n",ans);}return 0;
}
http://www.wxhsa.cn/company.asp?id=2140

相关文章:

  • 吻得太逼真
  • HyperWorks许可回收机制
  • flink on k8s的基本介绍
  • 高性能计算基础
  • flutter开发window打包成exe可执行文件的步骤
  • Transtion动画组件要求包裹元素必须是单一根节点
  • linux启动ntp服务
  • 企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent
  • android开发局域网内通过NTP服务端自动更新系统时间
  • 一招解决Proxmox VE虚拟机磁盘空间耗尽:LVM在线扩容实战 - 若
  • jiaozi
  • 基于Linux系统的定制软件安装硬件设备选型指南
  • c++之is_trivially_default_constructible
  • python3协程学习-async,await
  • 猫树分治
  • Rust太难了。。。。。。。
  • AI导航生成寻路点-FindPathToLocationSynchronously
  • cache写策略
  • 个人微信开发
  • C++之std::is_trivially_copyable
  • PostgreSQL技术大讲堂 - 第104讲:PostgreSQL分区表应用实践
  • redis实现缓存1-添加商户缓存
  • qemu的外部快照实现原理
  • Springboot 集成 飞书群消息
  • 最新爆料:GitHub Copilot全面推出OpenAI GPT-5 和 GPT-5 mini!
  • netstat 命令查看端口状态详解
  • 智聘无界:AI 破解全球化招聘合规、成本与人才匹配难题的实践路径
  • Nature | 本周最新文献速递
  • Flink 与Flink可视化平台StreamPark教程(CDC功能)
  • GAS_Aura-Setting Up Auto Running