洛谷 P5595 【XR-4】歌唱比赛
洛谷 P5595 【XR-4】歌唱比赛
题目描述
小 X 参加了一场歌唱比赛。
经过一路鏖战,小 X 终于挺进了决赛,他的对手是小 Y。
这场歌唱比赛的冠军是由点赞数决定的,谁的点赞数高,谁就能夺冠。
小 X 和小 Y 依次演唱完自己的最后一首歌曲后,他们最终的点赞数确定了下来。
揭晓冠军的时刻终于到来了,主持人为了增加悬念,决定从小 X 与小 Y 的点赞数的最后一位开始,依次比较。
比如,小 X 的点赞数是 3737,小 Y 的点赞数是 2828。首先比较最后一位,小 X 是 77,小 Y 是 88,此时小 Y 暂时领先。再加上前一位,小 X 是 3737,小 Y 是 2828,此时小 X 暂时领先。比较结束,如果我们用 X 代表小 X 暂时领先,Y 代表小 Y 暂时领先,那么可以写下一个字符串 XY。
再比如,小 X 的点赞数是 137137,小 Y 的点赞数是 4747。如果我们再用 Z 表示小 X 与小 Y 的点赞数暂时一样,那么写下的字符串应该为 XYZ。
你作为一个精通 OI 的神仙,自然知道这种比较方式是非常不科学的,这样只是在无端拖延时间罢了,但是你却对最后写下的这个字符串很感兴趣。
现在,你得到了这个最后写下的字符串,你需要构造出一种可能的小 X 与小 Y 的点赞数。
当然,有可能不存在任何一种情况的点赞数满足这个字符串,那么你只需要输出 -1 即可。
为了方便你输出,请用前导零来补足位数。
输入格式
一行一个字符串 ss,表示最后写下的字符串。
输出格式
如果有解:
- 第一行一个整数,表示小 X 的点赞数。
- 第二行一个整数,表示小 Y 的点赞数。
如果无解:
- 一行一个整数
-1。
输入输出样例
输入 #1复制
输出 #1复制
输入 #2复制
输出 #2复制
输入 #3复制
输出 #3复制
输入 #4复制
输出 #4复制
说明/提示
本题采用捆绑测试。
- Subtask 1(11 points):\text{len}(s) = 1len(s)=1。
- Subtask 2(42 points):s_i \in {\texttt{X},\texttt{Y}}s**i∈{X,Y}。
- Subtask 3(21 points):数据保证有解。
- Subtask 4(26 points):无特殊限制。
对于 100%100% 的数据,s_i \in {\texttt{X},\texttt{Y},\texttt{Z}}s**i∈{X,Y,Z},1 \le \text{len}(s) \le 10^61≤len(s)≤106。
题解:
一道橙题难了蒟蒻40多分钟
果然还是蒟蒻太菜了
一开始看觉得根本做不了,后来发现是SPJ。
那就好办了,我们随便构造出一个合法的序列就可以。
根据贪心的一个思想,为了维护序列的正确性,谁更大就往谁里捅9,谁更小往谁里捅0.
下面就是判断合法与否。
手推几组数据可以发现,如果Z不是连成串的,那么一定不合法:
比如:ZXYXYX这一段序列。到Z后面的那位的时候还是X比较大,突然就到了Z,两个人相等了??!
这是无论如何也构造不出来的。
所以判断一下就可以了。
蒟蒻又判了一下len=1的情况
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<ctime>
using namespace std;
const int maxl=1e6+1;
char s[maxl];
int ans1[maxl],ans2[maxl];
int main()
{
scanf("%s",s+1);
int len=strlen(s+1);
if(len==1)
{
if(s[1]=='Z')
printf("0\n0");
else if(s[1]=='X')
printf("2\n1");
else
printf("1\n2");
return 0;
}
for(int i=1;i<len;i++)
if(s[i]=='Z'&&s[i+1]!='Z')
{
printf("-1");
return 0;
}
for(int i=len;i>=1;i--)
{
if(s[i]=='X')
{
ans1[i]=9;
ans2[i]=0;
}
else if(s[i]=='Y')
{
ans1[i]=0;
ans2[i]=9;
}
else
{
ans1[i]=0;
ans2[i]=0;
}
}
for(int i=1;i<=len;i++)
printf("%d",ans1[i]);
puts("");
for(int i=1;i<=len;i++)
printf("%d",ans2[i]);
return 0;
}
洛谷 P5595 【XR-4】歌唱比赛的更多相关文章
- 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)
科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...
- 洛谷P2777 [AHOI2016初中组]自行车比赛
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 洛谷U14667 肝活动【比赛】 【状压dp】
题目描述 Yume 最近在玩一个名为<LoveLive! School idol festival>的音乐游戏.他之所以喜欢上这个游戏,是因为这个游戏对非洲人十分友好,即便你脸黑到抽不出好 ...
- 洛谷 P2777 [AHOI2016初中组]自行车比赛
题目描述 小雪非常关注自行车比赛,尤其是环滨湖自行车赛.一年一度的环滨湖自行车赛,需要选手们连续比赛数日,最终按照累计得分决出冠军.今年一共有 N 位参赛选手.每一天的比赛总会决出当日的排名,第一名的 ...
- 洛谷 U14475 部落冲突 【比赛】 【树链剖分 + 线段树】
题目背景 在一个叫做Travian的世界里,生活着各个大大小小的部落.其中最为强大的是罗马.高卢和日耳曼.他们之间为了争夺资源和土地,进行了无数次的战斗.期间诞生了众多家喻户晓的英雄人物,也留下了许多 ...
- 【洛谷 P1707】 刷题比赛 (矩阵加速)
题目连接 很久没写矩阵加速了,复习一下,没想到是一道小毒瘤题. 状态矩阵\(a[k],b[k],c[k],a[k+1],b[k+1],c[k+1],k,k^2,w^k,z^k,1\) 转移矩阵 0, ...
- 洛谷 2777 [AHOI2016初中组]自行车比赛
[题解] 为了让某个选手能够获得总分第一,就让他最后一天的得分是n,并且让别的选手的得分的最大值尽量小.于是我们先把目前积分排序,并且让他们最后一天的排名刚好与积分排名相反.即某个积分排名为X的人最后 ...
- 洛谷⑨月月赛Round2 官方比赛 OI
自评: (完成时间3.5时) 第一题 模拟 虽然A了,代码敲得有点慢 第二题 最短路 第一次敲对了,又考虑数据范围和答案范围,改错了,100分改成42分.QAQ. 第三题 乱搞 80分 还可以(因为没 ...
- [洛谷P1707] 刷题比赛
洛谷题目连接:刷题比赛 题目背景 nodgd是一个喜欢写程序的同学,前不久洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- ...
随机推荐
- JS运动---运动基础(匀速运动)
[一]运动基础 (2)基础运动案例 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- LeetCode 307. 区域和检索 - 数组可修改
地址 https://leetcode-cn.com/problems/range-sum-query-mutable/ 题目描述给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ ...
- echars line 底部图例强制不换行(滚动),修改图例样式
{ grid: { left: '5px', right: '10px', top: '10px', bottom: '40px', containLabel: true }, tooltip: { ...
- IT人的立功,立言,立德三不朽
最近几个月很忙,忙着当奶爸,忙着做加班狗,忙着补裤裆学技术……以至于快忘了要思考人生了! 古人立志穷极一生追求“立德”,“立功”,“立言”,以求不朽,为万世所景仰,为后人所传颂,实现人生的意义.立德者 ...
- 新终端必须source /etc/profile的解决办法,同时解决变色问题
Linux环境变量文件 /etc/profile:在登录时,操作系 统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. /etc /enviro ...
- Codeforces Round #599 (Div. 1) A. Tile Painting 数论
C. Tile Painting Ujan has been lazy lately, but now has decided to bring his yard to good shape. Fir ...
- OpenDaylight开发hello-world项目之功能实现
OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...
- C++入门到理解阶段二基础篇(6)——C++数组
概述 C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比如 numbe ...
- js获取计算机操作系统版本
如题,想要获取当先计算机的操作系统和版本号的话,可以用如下方法. 首先,创建osversion.js文件,文件里面的代码如下 var osData = [ { name: 'Windows 2000' ...
- webpack资源处理
使用上篇已谈过,这篇纯代码!!~~ <!DOCTYPE html> <html lang="en"> <head> <meta chars ...