icpc:problems:704d_genius_s_gambit
problems | |
---|---|
名称 | Genius's Gambit |
题目编号 | 704D |
题目链接 | codeforces.com/… |
来源 | CodeForces |
算法分类 | 构造 |
难易程度 | 小有难度 |
Genius's Gambit
想法
先1后0,然后移动y串,k最大也就a+b-2。每次特判一下就好。
代码实现
#include<cstdio>//uncle-lu #include<algorithm> template<class T>void read(T &x) { x=0;int f=0;char ch=getchar(); while(ch<'0'||ch>'9') { f|=(ch=='-'); ch=getchar(); } while(ch<='9'&&ch>='0') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } x = f ? -x : x; return ; } int main() { int a, b, k; read(a);read(b);read(k); if(b == 1) { if(k>0) printf("No"); else { printf("Yes\n"); for(int i=1; i<=a+b; ++i) if(i==1) printf("1"); else printf("0"); printf("\n"); for(int i=1; i<=a+b; ++i) if(i==1) printf("1"); else printf("0"); } return 0; } if(a == 0) { if(k>0) printf("No"); else { printf("Yes\n"); for(int i=1; i<=a+b; ++i) printf("1"); printf("\n"); for(int i=1; i<=a+b; ++i) printf("1"); } return 0; } if(k > a + b - 2) { printf("No"); return 0; } printf("Yes\n"); for(int i=1; i<=a+b; i++) if(i<=b) printf("1"); else printf("0"); printf("\n"); if(k <= a) { for(int i=1; i<=a+b; i++) { if(i<b) printf("1"); else if(i<b+k) printf("0"); else if(i==b+k) printf("1"); else printf("0"); } } else { for(int i=1; i<a+b; ++i) { if(i<b-(k-a)) printf("1"); else if(i==b-(k-a)) printf("0"); else if(i<b+1) printf("1"); else printf("0"); } printf("1"); } return 0; }
/app/www/public/data/pages/icpc/problems/704d_genius_s_gambit.txt · 最后更改: 2023/10/01 10:25 由 温婕莺