zoukankan      html  css  js  c++  java
  • Zebras CodeForces

    借鉴自:

    https://www.cnblogs.com/SuuT/p/8619227.html

    https://blog.csdn.net/my_sunshine26/article/details/79502152

    题意:

    给定一个01字符串,需要你把它分为k个子序列,其中k可以为任意正整数。

    对子序列的要求为

    1. 以0开始,以0结束

    2. 0,1相间

    输出满足条件的一种结果即可。  输出的结果还要从低到高的顺序

    扫一遍字符串,若为0就一直竖着往下写0,碰到1就回头往上写,再碰到0 就回头往下写······

    判断无法构造的依据:如果写1写得超过了上界就跳出,如果最后写的0不在最下面也跳出

    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <queue>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define mst(a,b) memset((a),(b),sizeof(a))
    #define rush() int T;scanf("%d",&T);while(T--)
     
    typedef long long ll;
    const int maxn = 200005;
    const ll mod = 1e9+7;
    const int INF = 1e9;
    const double eps = 1e-9;
     
    int n,m;
    char s[maxn];
    vector<int>vec[maxn];
     
    int main()
    {
        scanf("%s",s+1);
        int len=strlen(s+1);
        int Max=0;
        int zero=0;
        for(int i=1;i<=len;i++)
        {
            if(s[i]=='0') vec[++zero].push_back(i); //zero前面都是以0结尾的
            else
            {
                if(zero==0) return puts("-1"),0;   //确保每个子序列以0开始
                vec[zero--].push_back(i);          //这个位置放了1之后下一次又可以放0了
            }
            Max=max(Max,zero);                     //Max为当前已经用了几个容器,即分成了几个子序列
        }
        if(Max!=zero) return puts("-1"),0;         //确保每个子序列以0结尾
        printf("%d
    ",Max);
        for(int i=1;i<=Max;i++)
        {
            printf("%d",vec[i].size());
            for(int j=0;j<vec[i].size();j++)
            {
                printf(" %d",vec[i][j]);
            }
            puts("");
        }
    }
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    HDU2586 How far away?(tarjan的LCA)
    You Raise Me Up
    POJ2891 Strange Way to Express Integers(中国剩余定理)
    POJ2142 The Balance(扩展欧几里得)
    HDU 1166模仿大牛写的线段树
    NetWord Dinic
    HDU 1754 线段树裸题
    hdu1394 Minimum Inversion Number
    hdu2795 Billboard
    【完全版】线段树
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/9404646.html
Copyright © 2011-2022 走看看