HDU 3363 Ice-sugar Gourd

題目鏈接: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;

                    }

                }
            }
        }
    }
}

發佈了67 篇原創文章 · 獲贊 24 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章