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

题解:AT_abc166_f [ABC166F] Three Variables Game

题目

思路

这是一道比较简单的贪心题。

不断地分类讨论。哪一个小就加一,另一个就减一。如果两个都相等时,就判断下一个,有相同的就加一,另一个减一,如果都没有相同的,就随便加减。如果两个都为 $0$ 时,就直接输出 No 即可。

Code

代码有点长。额。

#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,a,b,c;
string s[100005],ans;
signed main(){scanf("%lld%lld%lld%lld",&n,&a,&b,&c);for(int i=1;i<=n;i++)cin>>s[i];for(int i=1;i<=n;i++){if(s[i]=="AB"){if(a==0&&b==0) {puts("No");return 0;}if(a>b){b++,a--;ans+='B';}else if(a<b){b--,a++;ans+='A';}else{if(s[i+1]=="BC"){b++;a--;ans+='B';}else if(s[i+1]=="AC"){a++;b--;ans+='A';}else{a++;b--;ans+='A'; }}}if(s[i]=="AC"){if(a==0&&c==0){puts("No");return 0;}if(a>c){c++;a--;ans+='C';}else if(a<c){c--,a++;ans+='A';}else{if(s[i+1]=="AB"){a++;c--;ans+='A';}else if(s[i+1]=="BC"){c++;a--;ans+='C';}else{a++;c--;ans+='A';}}}if(s[i]=="BC"){if(c==0&&b==0){puts("No");return 0;}if(c>b){b++;c--;ans+='B';}else if(c<b){b--,c++;ans+='C';}else{if(s[i+1]=="AC"){c++,b--;ans+='C';}else if(s[i+1]=="AB"){b++;c--;ans+='B';}else{b++;c--;ans+='B';}}}}puts("Yes");for(int i=1;i<=n;i++){cout<<ans[i-1]<<"\n";}return 0;
}

如有问题,请指出错误。

谢谢!

http://www.jsqmd.com/news/29304/

相关文章:

  • Awesome Neovim - 精选Neovim插件大全
  • 窗口函数
  • 别只怪客户端宕机!还有这些导致 Redis 分布式锁“死锁”的原因 - 公众号
  • CCF CSP-S2 2025 游记
  • CSP-S 2025 总结
  • LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制
  • 【EF Core】“多对多”关系与跳跃导航
  • DeepSeek-MTP多token预测
  • 11.2阅读笔记
  • 温故知新,英语口语提升计划之Social English - Greeting People
  • 23432
  • 关于dp
  • Git 协作实战与 Gerrit 评审流程
  • 分库分表MyCat 架构迁移 OceanBase | 百丽核心财务系统迁移经验总结与问题汇总
  • 算法研究内容算法有关概念
  • 第13天(中等题 滑动窗口)
  • 我重生了,重生到了CSP前——高中物理电学速通
  • 列车驶向何处 | CSP-S 2025 #3
  • 为啥slmbuild的cutoff不能设得很大
  • 团队项目1-团队展示选题-图书管理系统
  • 第二天,学习部分快捷键位(重点加粗)
  • windows terminal 配置文件
  • 第二章算法作业
  • Linux模板机优化实操
  • 渗透知识靶场实战
  • 第179-180天:横向移动篇入口切换SMB共享WMI管道DCOM组件Impacket套件CS插件
  • 游记 CSP-S2025
  • VRP基本配置命令
  • 2025 年 11 月 CBN 砂轮厂家最新推荐:结合剂迭代 + 精度优化,高耐用产品选购指南
  • Newton迭代法-----牛顿迭代法求解高次方函数的近似根