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;
    }

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

  • 相关阅读:
    本地安全策略
    windows本地用户及组的区别
    mysql基本命令总结
    常用DOS命令
    AES加密算法详解
    ctf密码学习题总结
    CTF最简单的Web题
    python进阶篇
    JNI开发流程
    JDK中的Timer和TimerTask详解
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4752312.html
Copyright © 2011-2022 走看看