zoukankan      html  css  js  c++  java
  • HihoCoder 1044 01-string 贪心

    1144 : 01串

    时间限制:7000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串"001"和"11"。

    如果存在符合条件的01串则输出字典序最小的S,否则输出NO。

    输入

    一行两个整数,表示n和m。(0<=n,m<=100000,0<n+m)

    输出

    一行一个字符串,为字典序最小的S或者NO。

    样例输入
    2 3
    样例输出
    10101

    要想字典序最小,那么从后向前,尽可能放1。

    不能有001和11(即011,111也不行)。那么含1的单位只能是...101...,也就是第n为放1,那么n-2也必须是1。某一位放1后,它会101延续到第一位或者第二位。即满足条件的应该满足:

                            101010...1010

                            101010...0000

                            010101...0101

                            010101...0000

    所以只要从第二位或者第一位开始验证即可。

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int main()
    {
        int n,m,i,j;
        scanf("%d%d",&n,&m);
        if(m-1>n) printf("NO
    ");
        else if(m<=n){//第二位 
            printf("0");
            n--;
            for(i=1;i<=m-1;i++)
            printf("10");
            if(m>0)printf("1");
            for(i=m;i<=n;i++)
            if(i>0)printf("0");
        }
        else {//第一位 
            for(i=1;i<=m-1;i++)
            printf("10");
            if(m>0)printf("1");
            for(i=m;i<=n;i++)
            if(i>0)printf("0");
        }
        return 0;
    }
  • 相关阅读:
    Solution -「CF 1303G」Sum of Prefix Sums
    Solution -「SCOI 2016」萌萌哒
    赵栋 201771010137 《面向对象程序设计(java)》第一周学习总结
    PIC单片机的XC8
    10种软件滤波方法
    PIC单片机的定时器
    ASP.NET 缓存
    SqlServer索引的原理与应用
    SQL Server 游标
    SQL Server 开发指南
  • 原文地址:https://www.cnblogs.com/hua-dong/p/7791551.html
Copyright © 2011-2022 走看看