设为首页 加入收藏

TOP

Codeforces Round #306 (Div. 2) (ABCE题解)(三)
2015-11-21 00:59:49 来源: 作者: 【 】 浏览:10
Tags:Codeforces Round #306 Div. ABCE 题解
e multiple possible answers, you are allowed to print any of them.

Sample test(s) Input
4
0 1 1 0
Output
YES
(((0)->1)->(1->0))
Input
2
1 1
Output
NO
Input
1
0
Output
YES
0

?

题目大意:给四个转移式子,然后给一个0/1串问是否存在某总计算方式使得最后答案为0,存在则输出任意一种合法的方式

?

?

题目分析:从给的四个式子中可以发现如果结果要为0,最后一位必须是0,现在要做的就是再最后一个0之前构造1,我们可以发现如果最后一个0的前面一个是1,那么不管这个1之前是什么最后答案都是1,因为0 ->1=1,1 ->1=1,即与前面的值无关,所以我们转过来考虑不可能的情况,考虑最后一个0的前面是0,因为要构1,又0->0=0,1->0=0也就是说这个0前面不能是1,依次类推可以得到,如果倒数第二个0的前面都是1,那必然无解,否则就有解

?

?

#include 
  
   
#include 
   
     int const MAX = 1e6 + 5; int n, a[MAX]; int main() { scanf(%d, &n); for(int i = 1; i <= n; i++) scanf(%d, &a[i]); if(n == 1) //特判一个数 { if(a[1] == 1) printf(NO ); else printf(YES 0 ); return 0; } if(a[n] == 1) { printf(NO ); return 0; } bool flag = false; for(int i = 1; i <= n - 2; i++) { if(a[i] != 1) { flag = true; break; } } if(!flag && a[n - 1] == 0 && a[n] == 0) //1111111 1 0Y 0 0N { printf(NO ); return 0; } printf(YES ); for(int i = 1; i <= n - 2; i++) printf((%d->, a[i]); printf(%d, a[n - 1]); for(int i = 1; i <= n - 2; i++) printf()); printf(->0 ); } 
   
  

?

?

D也是个构造,没来及补

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ3623:Best Cow Line, Gold(后.. 下一篇C Language Study - 函数指针的使..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: