zoukankan      html  css  js  c++  java
  • codeforces #550E Brackets in Implications 结构体

    标题效果:定义集合中{0,1}上的运算符“”,定义例如以下:
    00=1
    01=1
    10=0
    11=1
    如今给定一个表达式a1a2a3...an,要求加入一些括号使得值为0
    由于0=10,因此显然末尾必须是0,否则无解
    然后我们这么构造:
    (a1(a2(a3(...))))an
    由于an=0。所曾经面的那些东西必须等于1
    然后我们讨论an1
    假设an1=1,那么前面那坨东西显然是1(由于0要求末尾是0)
    假设an1=0。那么找到前面第一个0,一直合成到这个0后,由于00=1,因此末尾就变成了1
    假设前面没有0,那么这个数列就是111...100
    略微手玩一下能够发现这样的情况下无解。

    #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
    0");
            return 0;
        }
        if(a[n]==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[n]==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;
    }

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    异常处理 try catch throw(C++)
    Kubernetes轻量级日志收集系统LokiStack
    第一章.java
    第四章.选择结构(二)
    java语法
    第三章if选择结构
    第二章.数据类型变量名和运算符
    【转载】跳槽七诫
    【转载】修改shell终端提示信息
    ubuntu11.10面板上输入法图标消失解决办法
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4752312.html
Copyright © 2011-2022 走看看