zoukankan      html  css  js  c++  java
  • zoj3829 Known Notation --- 2014 ACM-ICPC Asia Mudanjiang Regional Contest

    根据规则,可以发现,一*之前必须有至少2数字。一(11*)这反过来可以被视为一数字。

    因此,总位数必须大于*号码,或者你会加入数字。

    添加数字后,,为了确保该解决方案将能够获得通过交流。那么肯定是*放回去,图提出。交易所至今资格。



    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    char s[1010];
    int len,ans,opp[1010],num[1010],op,cnt;
    bool check(int b)
    {
        int a=0;
        for(int i=0;i<len;i++)
        {
            if(s[i]=='*') a++;
            else b++;
            if(a>=b) return 0;
        }
        return 1;
    }
    int main()
    {
        int T,i,j,b;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s",s);
            len=strlen(s);
            cnt=op=ans=0;
            for(i=0;i<len;i++)
            {
                if(s[i]=='*') opp[op++]=i;
                else num[cnt++]=i;
            }
            if(op==0)
            {
                puts("0");
                continue;
            }
            for(i=0,j=cnt-1;i<j;i++,j--) swap(num[i],num[j]);
    
            if(op>=cnt) ans+=(op-cnt+1);
            int fir=0,last=0;
            b=ans;
            while(!check(b))
            {
                ans++;
                swap(s[opp[fir++]],s[num[last++]]);
            }
            printf("%d
    ",ans);
        }
        return 0;
    }


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Hopcroft-Carp 算法模板 自用
    (转)二分图匹配匈牙利算法与KM算法
    LightOJ
    最短路类型 (至今做过的)
    POJ
    POJ
    差分约束
    传递闭包(例题POJ3660)
    arrow,
    分辨率,
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4833340.html
Copyright © 2011-2022 走看看