洛谷 P5595 歌唱比赛
题目链接:歌唱比赛
思路
根据题目分析可得,假如小x的点赞数是123111,小y的点赞数是234111,则字符串的第4为到第6位结果都为Z,分别为对比(111,111),(11,11),(1,1),字符串的第三位为Y,为对比(3111,4111),则结果字符串为YYYZZZ。
此时可以轻易判断出字符串中第一个Z后面的所有字母都是Z,所以当出现X和Y之前有Z的时候肯定无法构造出小x和小y对应的点赞数,此时需要输出-1,其他情况简单判断当前字符串元素为X时,则说明小x的后缀数字大于小y的后缀数字,此时令小x的当前数位为2,小y的当前数位为1,当前字符串元素为Y时,小y的当前数位为2,小x的当前数位为1,当前为X时,两个人的当前数位都为1。
代码
#include <bits/stdc++.h> using namespace std; const int N = 1e6 + 10; int x[N], y[N], ansx, ansy, flag; int main() { string s; cin >> s; int len = s.length(); for (int i = len - 1; i >= 0; i--) { if (s[i] == 'X') { ansx++; x[i] = 2; y[i] = 1; } else if (s[i] == 'Y') { ansy++; x[i] = 1; y[i] = 2; } else { x[i] = 1; y[i] = 1; if (ansx || ansy) { flag = 1; break; } } } if (flag) { cout << -1 << endl; return 0; } for (int i = 0; i < len; i++) { cout << x[i]; } cout << endl; for (int i = 0; i < len; i++) { cout << y[i]; } return 0; }
合集:
洛谷
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)