1 条题解
-
0
自动搬运
来自洛谷,原作者为

Fatalis_Lights
『 Delightful. 』搬运于
2025-08-24 22:12:20,当前版本为作者最后更新于2019-10-27 21:13:42,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Solution
拿到这个题,不要被它吓到了。仔细分析一下,你就知道如何处理了。
第一种情况:只有X,Y。
那么如果是X,就输出1,Y则为0。
sample input: XY sample output: 10 01如果有解且有Z,则有Z的位置为1。
sample input: XYZ sample output: 101 011如果无解,那么就是说Z和XY冲突了。
首先,如果其中一位是Z,则Z后的所有位置都为Z。
sample input: XYZZ sample output: 1011 0111如果不是Z,比如下面这个:
sample input: XYZXZ sample output: -1直接输出"-1"。
那么这个题就解决了。
code:
#include<bits/stdc++.h> #define N 1000006 using namespace std; string s; int a[N],b[N]; bool pd(string s){ bool flag=0; for(int i=0;i<s.size();i++){ if(s[i]=='Z') flag=1; if(flag==1 && s[i]!='Z') return 1; } return 0; } //一位一位判断Z int main(){ cin>>s; if(pd(s)) return puts("-1"), 0; //无解输出-1 for(int i=0;i<s.size();i++) if(s[i]=='X') a[i]=1,b[i]=0; else if(s[i]=='Y') a[i]=0,b[i]=1; else if(s[i]=='Z') a[i]=1,b[i]=1; for(int i=0;i<s.size();i++) cout<<a[i]; cout<<endl; //输出是有换行的 for(int i=0;i<s.size();i++) cout<<b[i]; cout<<endl; return 0; }
- 1
信息
- ID
- 4591
- 时间
- 1000ms
- 内存
- 500MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者