码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 550E Brackets in Implications(构造)

时间:2017-06-11 10:21:59      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:namespace   倒数   type   思路   进一步   todo   ica   tar   code   

题目链接】: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(构造)

标签:namespace   倒数   type   思路   进一步   todo   ica   tar   code   

原文地址:http://www.cnblogs.com/yfceshi/p/6984275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!