zoukankan      html  css  js  c++  java
  • 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;
    }


  • 相关阅读:
    poj3468(A Simple Problem with Integers)线段树+树状数组
    关于JVM——JVM内存模型
    关于JVM——类加载机制
    关于JVM(二)
    关于JVM(一)
    关于LongAdder
    关于Future
    关于Fork/Join
    关于Atomic
    关于LockSupport
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6984275.html
Copyright © 2011-2022 走看看