zoukankan      html  css  js  c++  java
  • hdu3363 Icesugar Gourd

    题意:给你一个包含'H' 'T'的串,问最少要切几刀才能使得切下来的块分别分给2个人去使得2个人得到的H数目相等且T的数目相等。

    分析:明确了一点之后,这题目就很好做了。就是,至多切俩刀。具体的证明看这里吧

    http://hi.baidu.com/superlong/blog/item/c7e86b067ca0337703088146.html

    hdu3363
    #include<iostream>
    #include<algorithm>
    #include<string>
    using namespace std;
    char str[100005];
    int n;
    int main()
    {
    while(scanf("%d",&n)==1&&n)
    {
    scanf("%s",str);
    int h=0,t=0;
    for(int i=0;i<n;i++)
    if(str[i]=='H')
    h++;
    else t++;
    if(h%2==0 && t%2==0)
    {
    h/=2;t/=2;
    }
    else
    {
    printf("-1\n");
    continue;
    }
    int hh=0,tt=0;
    for(int i=0;i<n/2;i++)
    if(str[i]=='H')
    hh++;
    else tt++;
    if(hh==h && tt==t)
    {
    printf("1\n%d\n",n/2);
    continue;
    }
    for(int i=n/2,j=0;i<n;i++,j++)
    {
    if(str[i]=='H')
    hh++;
    else tt++;
    if(str[j]=='H')
    hh--;
    else tt--;
    if(hh==h && tt==t)
    {
    printf("2\n%d %d\n",j+1,i+1);
    break;
    }
    }
    }
    return 0;
    }

  • 相关阅读:
    树:二叉树
    树:红黑树
    gtest
    VDB R&D
    QML 从入门到放弃
    json parse
    Effective C++ 笔记
    Samples topic
    C++ 11 snippets , 2
    C++ 11 snippets , 1
  • 原文地址:https://www.cnblogs.com/nanke/p/2344726.html
Copyright © 2011-2022 走看看