codeforces #550E Brackets in Implications 构造
2015-06-05 14:08
246 查看
题目大意:定义在集合{0,1}\{0,1\}上的运算符“→\rightarrow”,定义如下:
0→0=10\rightarrow 0=1
0→1=10\rightarrow 1=1
1→0=01\rightarrow 0=0
1→1=11\rightarrow 1=1
现在给定一个表达式a1→a2→a3→...→ana_1\rightarrow a_2\rightarrow a_3\rightarrow ...\rightarrow a_n,要求添加一些括号使得值为00
由于0=1→00=1\rightarrow 0,因此显然末尾必须是00,否则无解
然后我们这么构造:
(a1→(a2→(a3→(...))))→an(a_1\rightarrow (a_2\rightarrow (a3\rightarrow (...))))\rightarrow a_n
由于an=0a_n=0,所以前面的那些东西必须等于11
然后我们讨论an−1a_{n-1}
如果an−1=1a_{n-1}=1,那么前面那坨东西显然是11(因为00要求末尾是00)
如果an−1=0a_{n-1}=0,那么找到前面第一个00,一直合成到这个00后,因为0→0=10\rightarrow 0=1,因此末尾就变成了11
如果前面没有00,那么这个数列就是111...100111...100
稍微手玩一下可以发现这种情况下无解。
0→0=10\rightarrow 0=1
0→1=10\rightarrow 1=1
1→0=01\rightarrow 0=0
1→1=11\rightarrow 1=1
现在给定一个表达式a1→a2→a3→...→ana_1\rightarrow a_2\rightarrow a_3\rightarrow ...\rightarrow a_n,要求添加一些括号使得值为00
由于0=1→00=1\rightarrow 0,因此显然末尾必须是00,否则无解
然后我们这么构造:
(a1→(a2→(a3→(...))))→an(a_1\rightarrow (a_2\rightarrow (a3\rightarrow (...))))\rightarrow a_n
由于an=0a_n=0,所以前面的那些东西必须等于11
然后我们讨论an−1a_{n-1}
如果an−1=1a_{n-1}=1,那么前面那坨东西显然是11(因为00要求末尾是00)
如果an−1=0a_{n-1}=0,那么找到前面第一个00,一直合成到这个00后,因为0→0=10\rightarrow 0=1,因此末尾就变成了11
如果前面没有00,那么这个数列就是111...100111...100
稍微手玩一下可以发现这种情况下无解。
[code]#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 100100 using namespace std; int n,a[M]; int main() { int i; cin>>n; for(i=1;i<=n;i++) scanf("%d",&a[i]); if(n==1) { if(a[1]==1) puts("NO"); else puts("YES\n0"); return 0; } if(a ==1) return puts("NO"),0; for(i=1;i<=n-2;i++) if(a[i]!=1) break; if(i==n-1&&a[n-1]==0&&a ==0) return puts("NO"),0; puts("YES"); for(i=1;i<=n-2;i++) printf("(%d->",a[i]); printf("%d",a[n-1]); for(i=1;i<=n-2;i++) putchar(')'); puts("->0"); return 0; }
相关文章推荐
- 20135337朱荟潼——实验三之结对实验项目
- 将数据表列拼接为字符串的方法
- Appium完整安装教程
- 关于答疑
- UIScrollView _delegateScrollViewAnimationEnd 引起的崩溃处理
- 产生不重复的随机数
- 一个简单的JSP测试页面
- spring security3的filter链
- Java偏向锁
- 一个开源的页面传输压缩算法
- php营销基础
- 动态规划算法Dynamic Programming
- GRE数学题巧解
- Spring+Quartz实现定时任务的配置方法(插曲)
- 模仿微信"转你妹"游戏
- opencv+VS+X64/win32切换
- 如何去掉listview滑动时的阴影
- SQL Server 中WITH (NOLOCK)浅析
- “Network”游戏棋人机对弈的设计与实现(二)—判断步骤是否合法
- easyui中的几个问题