首页 > 代码库 > CodeForces 550E Brackets in Implications(构造)
CodeForces 550E Brackets in Implications(构造)
【题目链接】:click here~~
【题目大意】给定一个逻辑运算符号a->b:当前仅当a为1b为0值为0,其余为1,构造括号。改变运算优先级使得最后结果为0
【解题思路】:
todo~~
/*
思路:
1.假设最后一位是1,不管怎样结果不会为0.puts("NO");
2.那么有解的情况下最后一位必为0
2.1.进一步发现,事实上倒数第二位必为1,仅仅有1前面的结果和该位1结合才干等于1,进一步1->0=0;
2.2.假设1前面是0。那么合并这两位数,组成1,递推2.1
*/
代码:
#include <bits/stdc++.h> using namespace std; const int N=1e5+10; typedef long long LL; typedef unsigned long long LLU; int num[N]; int n,m,l,r,ans,cnt,top; int zero,one; int main() { while(cin>>n) { zero=one=0; for(int i=0; i<n; ++i) { scanf("%d",&num[i]); if(num[i]==0) ++zero; else ++one; } int a3=num[n-1]; int a2=num[n-2]; int a1=num[n-3]; if(a3==0&&(a2==1||zero!=2))//保证最后一位是0,倒数第二位是1 { puts("YES"); printf("("); for(int i=0; i<=n-3; ++i) { printf("(%d->",num[i]); } printf("%d",a2); for(int i=0; i<=n-3; ++i) printf(")"); if(n-1) printf("->0"); printf(")"); puts(""); } else puts("NO"); } return 0; }
CodeForces 550E Brackets in Implications(构造)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。