洛谷 P5595 【XR-4】歌唱比赛 刷题笔记

2023-12-25 09:10:11

构造数据?P5595 【XR-4】歌唱比赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

XYZXYZ错误原因在于?

一旦有一位是z代表两者点赞数暂时相同?

如果z后面不是z

137 148 即第一位相同 后两位不同 则不满足两者点赞数相等

因此我们从前往后检查字符串 一旦遇到z后面不是z的情况返回-1即可

对于满足条件的输入

当一个人领先我们让他输出2而另一个输出1即可

相等则大家都输出3.。

#include<iostream>
#include<string.h>
using namespace std;
int main(){
?? ?char str[1000010];
?? ?int a[1000010],b[1000010];
?? ?cin>>str;
?? ?
?? ?int m=strlen(str);
?? ?
?? ?int flag=0,num=0;
?? ?int mask=0;
?? ?int cnt=0;
?? ?while(cnt<m){
?? ??? ?if(str[cnt]=='Z'){
?? ??? ??? ?mask=1;
?? ??? ?}
?? ??? ?if(mask==1&&str[cnt]!='Z'){
?? ??? ??? ?flag=1;
?? ??? ??? ?cout<<-1;
?? ??? ??? ?break;?
?? ??? ?}
?? ??? ?cnt++;
?? ?}?
?? ?
?? ?
?? ?if(flag==0){
?? ??? ?
?? ??? ?for(int i=0;i<m;i++){
?? ??? ?if(str[i]=='X'){
?? ??? ??? ?a[i]=2;b[i]=1;
?? ??? ?}else if(str[i]=='Y'){
?? ??? ??? ?a[i]=1;b[i]=2;
?? ??? ?}else{
?? ??? ??? ?a[i]=3;b[i]=3;
?? ??? ?}
?? ?}
?? ?
?? ?for(int i=0;i<m;i++){
?? ??? ?cout<<a[i];
?? ?}
?? ??? ?cout<<endl;
?? ?for(int i=0;i<m;i++){
?? ??? ?cout<<b[i];
?? ?}
?? ??? ?
?? ?}
?? ?
?? ?return 0;
}

注意用m来得到字符串长度 否则每次for循环都调用一次strlen 函数会tle.

文章来源:https://blog.csdn.net/2301_78763076/article/details/135141998
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。