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

题解:Codeforces Round 1113 CF2248 A - You Delete, I Delete

题目描述

给定一个仅由01组成的二进制字符串 s(至少一个 0、至少一个 1)。两人依次各执行恰好一次操作:

  1. Alice(先手):选择字符串中一个0删除;目标:最终字符串字典序尽可能大
  2. Bob(后手):在 Alice 操作后的新串中,选择一个1删除;目标:最终字符串字典序尽可能小双方均采取最优策略,求博弈结束后的最终字符串。

字典序说明:二进制串比较,从左到右第一个不同位置,1 > 0。例:101 > 100

输入样例1

4 101 11001 0010 0101010000010100100101

输出样例1

1 101 00 01010000010100100101

样例1解释

在第 $1$ 个测试用例中,Alice必须删除唯一的 $\mathtt{0}$ 。Bob可以删除 $\mathtt{1}$ 中的任意一次,因此得到的字符串是 $\mathtt{1}$ 。

在第 $2$ 个测试用例中,Alice可以删除 $\mathtt{0}$ 中的任意一个。Bob会以最佳方式删除 $\mathtt{1}$ 的前两次出现中的一次,因此得到的字符串是 $\mathtt{101}$ 。

在第 $3$ 个测试用例中,Alice可以删除 $\mathtt{0}$ 的任何出现次数。然后,Bob删除了 $\mathtt{1}$ 的唯一一次出现,因此得到的字符串是 $\mathtt{00}$ 。

解题思路

博弈核心思想:Minimax(极小极大算法)

这道题是典型双人零和完全信息博弈,完美对应极小极大模型:

  • Alice 是MAX 方:在所有可行方案里,追求结果最大;
  • Bob 是MIN 方:在给定局面下,追求结果最小。

推演流程(暴力模拟思路,数据范围很小,无需数学结论):

  1. 枚举 Alice所有合法操作:遍历原串每一个下标,如果该位置字符是'0',模拟删掉它,得到中间串 sa。
  2. 针对每一个中间串 sa,模拟 Bob 的最优决策: 枚举 sa 中所有'1',逐个删除得到候选结果;Bob 会从中挑选字典序最小的字符串,作为本轮 Alice 选择对应的最终结果。
  3. Alice 预知 Bob 的最优反击,因此在所有 “Bob 反击后的结果” 中,选出字典序最大的字符串,就是全局答案。

一句话概括:Alice 预判 Bob 会怎么坑自己,再挑选对自己最有利的选择。

完整代码

#include<bits/stdc++.h> #define fr1(i,a,b) for(int (i)=(a);(i)<=(b);++(i)) #define fr2(i,a,b) for(int (i)=(a);(i)>=(b);--(i)) #define fv(i,p) for(auto (i):(p)) #define ll long long #define ull unsigned ll #define pii pair<int,int> #define pll pair<ll,ll> #define _1st first #define _2nd second #define y1 yy1 #define elif else if #define debug cout<<endl<<"-------------------------------------------------------------"<<endl using namespace std; string del(string str,int pos){ str.erase(pos,1); return str; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int t; cin>>t; while(t--){ string s; cin>>s; string ans=""; fr1(i,0,s.size()-1){ if(s[i]!='0')continue; string sa=del(s,i); string bob_best; bool first=1; fr1(j,0,sa.size()-1){ if(sa[j]!='1')continue; string res=del(sa,j); if(first){ bob_best=res; first=0; }else{ if(res<bob_best) bob_best=res; } } if(ans.empty()||bob_best>ans){ ans=bob_best; } } cout<<ans<<'\n'; } return 0; }
http://www.jsqmd.com/news/1327445/

相关文章:

  • 广州配电柜回收实用指南:本地专业企业实测 - 广东再生资源回收
  • 山东莱州汽车配件俄罗斯诚实标识一站式方案:轻量化部署与合规落地工程实践
  • 身份证、营业执照、公章登报挂失要求与区别是什么?在哪里登报?一次性搞懂全部要点 - 信息快递
  • 珠海电缆回收价格与服务数据报告:2026市场调研 - 广东再生资源回收
  • 电力系统暂态稳定性仿真与Simulink实践
  • 从零上手 openGauss:Docker 部署 + 全场景连接教程 - PC2005
  • 三步解锁音乐歌词自由:如何用163MusicLyrics高效获取网易云QQ音乐LRC歌词
  • KMS智能激活:免费快速激活Windows和Office的终极解决方案
  • 手机号查询QQ号:3分钟快速上手的终极指南
  • Flask实例路径配置详解与最佳实践
  • 2026上海浦东新区品牌首饰回收避坑指南:如何找到靠谱的实体好店? - 奢侈品回收实体店探店
  • yolo系列免环境训练工具 支持yolov8-13 可目标检测,obb,分类,分割,关键点训练。
  • 2026张家港卫生间漏水、外墙、楼顶、地下室、阳台+阳光房渗漏不用愁?3家正规靠谱防水公司推荐:选对服务商,告别反复渗漏,售后无忧 - 吉林同城获客
  • 2026 上海高端住宅中央空调品牌深度解析与选型指南 - 资讯综合
  • 【2026最新】写小说软件哪个好?10款AI写小说工具亲测横评与避坑指南
  • 如何用Python轻松获取同花顺问财数据:量化投资入门完整指南
  • 终极指南:如何免费使用Cursor Pro功能并绕过机器ID限制
  • JavaQuestPlayer:用Java重铸QSP引擎,实现跨平台文字游戏开发与集成
  • 珠海家里到处漏水发霉?卫生间、屋顶外墙全场景漏水原因一次讲透 - 宅安选房屋修缮
  • 工业地板怎么选?别只看产品,先看供应链稳定性、技术专利和全国服务网络 - 中国华商产业观察网
  • Unity相机交互开发:从Scene视图到Game视图的工业级迁移方案
  • AI毕业论文工具实测:写论文的AI效果如何
  • 设计-简约而不简单
  • 论文AI检测率高的原因与物理降AI法实操指南
  • 5分钟打造你的专属知识中心:Obsidian个性化首页完整指南
  • 工业地板怎么选最有性价比?别只看价格,先看产品体系、防腐能力和供应链稳定性 - 中国华商产业观察网
  • 终极Windows热键冲突检测指南:Hotkey Detective完整解决方案
  • 5步实现专业级虚拟背景:obs-backgroundremoval完整实战指南
  • 5种强力脚本彻底改变你的Illustrator设计工作流
  • 2026 武汉南华光电职业技术学校招生办电话_招生老师联系方式汇总 - 武汉中职最新信息发布