AquaRio 的博客

AquaRio 的博客

题解 P5595 【【XR-4】歌唱比赛】

posted on 2019-10-20 22:46:17 | under 题解 |

题目传送门:[XR-4] 歌唱比赛

Description

有两个数,给出后 $n-i+1$ 位 $(1<=i<=n)$ 组成的数的大小关系。求两个数可能的值。

Solution

怎么感觉比第一题还签到?

其实把大小关系读进来,从后往前扫。

不存在合法的情况,当且仅当出现Z前面出现了一个别的字母。我们开一个bool变量,随便维护一下就可以了。

剩下就模拟吧,哪个大了,就给那一位填上较大的数字。

Code

/*
    Name: [XR-4] 歌唱比赛
    Author: Lovely_XianShen
    Date: 20/10/19 19:18
*/

#include<bits/stdc++.h>
using namespace std;

char qaq[1000005];
int a[1000005],b[1000005];

int main() {
    bool notdeng=0;
    scanf("%s",qaq);
    int len=strlen(qaq);
    for(int i=len-1; i>=0; i--) {
        if(qaq[i]=='Z') {
            if(notdeng==1) {
                cout<<-1;
                return 0;
            }
            a[i]=3;
            b[i]=3;
        } else {
            notdeng=1;
            if(qaq[i]=='X') {
                a[i]=5;
                b[i]=0;
            } 
            if(qaq[i]=='Y'){
                a[i]=0;
                b[i]=1;
            }
        }
    }
    for(int i=0; i<len; i++)
        printf("%d",a[i]);
    cout<<endl;
    for(int i=0; i<len; i++)
        printf("%d",b[i]);
    cout<<endl;
}