CodeForces135C Zero-One
来源:互联网 发布:阿里云仓 编辑:程序博客网 时间:2024/06/08 01:37
明明记得中午交的最后一遍是WA,晚上一看竟然变成了Accepted,好神奇,还有比这来的更突然,更让人鸡冻的吗......
题意:给出一个只有‘0’,‘1’,‘?’组成的字符串,每人每次必修删且只删掉一个,直到字符串剩下两个字符。先手每次都要让剩下的字符串尽可能的大,后手则尽可能的小。
对于有’?‘的则输出所有的情况。
思路:其实这道题就是在讨论0,1,?的个数的关系。当?的变化起不到作用时,显然结果是唯一,起到作用是就要分类讨论了,详见代码。
#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <queue>#include <cmath>#include <algorithm>#define LL long long#define Max(a,b) (a) > (b) ? (a) : (b)#define Min(a,b) (a) < (b) ? (a) : (b)#define EPS (1e-8)#define Left (1)#define Right (-1)using namespace std;char s[101000];int main(){ int i,l,s0,s1,s2,d1,d0; char c; while(cin>>s) { s0 = s1 = s2 = 0; l = strlen(s); for(i = 0; i < l; ++i) { if(s[i] == '0') s0++; else if(s[i] == '1') s1++; } s2 = l - s1 - s0; d1 = d0 = (l-2)/2; if(l&1) d1++; if(d1+2 <= s1) { cout<<"11"<<endl; } else if(d0+2 <= s0) { cout<<"00"<<endl; } else if(d0+1 == s0 && d1+1 == s1) { for(i = l-1;i >= 0; --i) { if(s[i] != s[l-1]) { cout<<s[i]<<s[l-1]<<endl; break; } } } else if( (d0+1 == s0 && d1+1 == s1+s2) || (d0+1 == s0+s2 && d1+1 == s1) ) { if(s[l-1] == '0') { cout<<"00"<<endl; cout<<"10"<<endl; } else if(s[l-1] == '1') { cout<<"01"<<endl; cout<<"11"<<endl; } else if(d0+1 == s0 && d1+1 == s1+s2) { cout<<"00"<<endl; cout<<"01"<<endl; } else { cout<<"10"<<endl; cout<<"11"<<endl; } } else { cout<<"00"<<endl; cout<<"01"<<endl; cout<<"10"<<endl; cout<<"11"<<endl; } } return 0;}
- CodeForces135C Zero-One
- 《Zero to One》读书笔记
- ionic2 - zero to one
- 《Zero to One》
- Zero To One
- UVa 12646 - Zero or One
- Spark: From Zero To One
- CodeForces 135C C. Zero-One
- crawler for one two three zero six
- 阅读《从0到1》(Zero to One)
- must take either zero or one argument错误分析
- 由“竞争”引发的一点思考 -- 读《ZERO TO ONE》
- 迁移学习总结(One Shot Learning, Zero Shot Learning)
- [ Java Zero to One ] 1. Java String 之 基础概念
- [ Java Zero to One ] 2. Java String 之 高级原理
- zero
- zero
- Zero+
- C++ 数组和指针学习总结
- 版本控制
- 数据结构 - C语言版 - 线性表 所有基本操作
- 各种编码格式
- 实现CCTableView带滚动条(转)
- CodeForces135C Zero-One
- Unable to add window — token android.os.BinderProxy is not valid; is your activity running?
- 追击理论判断有环链表
- 停车场管理(栈和队列)
- POJ1014:Dividing
- Android 常见问题
- 数据结构 - C语言版 - 单链表 所有基本操作
- Windows下使用GSL(GNU Scientific Library)
- TrustZone——开发环境—QEMU