HDU 3363 Ice-sugar Gourd

来源:互联网 发布:淘宝域名是什么 编辑:程序博客网 时间:2024/06/05 00:25

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3363

题意:一条字符串,只有H,T,切任意刀将H,T个分为原来的一半。

因为只有两种字符,,,分成两份,有一段一定连续,先判断,前一半和后一半是否相等,相等切一刀,在讨论两刀。

代码如下:

#include<bits/stdc++.h>using namespace std;int main(){    char a[100005];    int n;    while(scanf("%d",&n)!=EOF)    {        if(n==0)            break;        int h=0;        getchar();        for(int i=0; i<n; i++)        {            scanf("%c",&a[i]);            if(a[i]=='H')                h++;        }        if(n%2!=0||h%2!=0)        {            printf("-1\n");            continue;        }        else        {            int cnt=0;            for(int i=0; i<n/2; i++)            {                if(a[i]=='H')                    cnt++;            }            if(cnt==h/2)            {                printf("1\n");                printf("%d\n",n/2);                continue;            }            else            {                int hh[100005];                h=0;                for(int i=0; i<n; i++)                {                    if(a[i]=='H')                        h++;                    hh[i]=h;                }                /*printf("-------%d\n",h);                for(int i=0; i<n; i++)                {                    printf("%d ",hh[i]);                }                printf("------------\n");*/                for (int i=1; i<n/2; i++)                {                    if ((hh[i+n/2-1]-hh[i-1])==h/2)                    {                        printf("2\n");                        printf("%d %d\n",i,i+n/2);                        break;                    }                }            }        }    }}

0 0
原创粉丝点击