zoukankan      html  css  js  c++  java
  • 【NOIP模拟】多彩的巧克力

    题面

    奶牛 Bessie 有 N 块巧克力,从左往右排成一行,编号从 0 到 N-1。第 i 块巧克力的颜色是 color[i]。我们定义一个参数 MaxLen,它表示:具有相同颜色的连续一段巧克力的最大长度。例如:有 10 块巧克力,颜色分别是: ADDDABBAAB,那么 MaxLen=3,因为有 3 块颜色是 D 的巧克力,而且这 3 块巧克力的位置是连续的。为了使得 MaxLen 最大,Bessie 可以交换相邻两块巧克力的位置,但是 Bessie 总共交换的次数不能超过给定的值 swap。那么 MaxLen 的最大值是多少?

    分析

    枚举每个点,把颜色与枚举的这个点相同的点往中间拉。为什么不需要枚举颜色,而直接把颜色相同的点拉过来?

    因为最后得出的答案串一定是ABBBBBBAAA(A为不是B的任意颜色),而BBBBBB这样的串中,我们假设是以中间的某一个B把旁边的相同的B拉过来

    即等效替代,反正最后结果已经到达了最优,那最优情况一定是相同颜色的巧克力向中间靠

    #include<bits/stdc++.h>
    using namespace std;
    #define N 100
    int g,n,s,l,r,j,k,tmp,ans;
    int col[N];
    char ch[N];
    int main()
    {
        scanf("%d",&g);
        while(g--)
        {
            scanf("%d%d%s",&n,&s,&ch);
            for(int i=1;i<=n;i++)
                col[i]=ch[i-1]-'A'+1;
            ans=0;
            for(int i=1;i<=n;i++)
            {
                l=r=i;j=i-1;k=i+1;
                tmp=0;;
                while(j>=1||k<=n)
                {
                    while(j>=1&&col[j]!=col[i])j--;
                    while(k<=n&&col[k]!=col[i])k++;
                    if(j>=1&&(k>n||l-j-1<=k-r-1))
                    {
                        if(tmp+l-j-1>s)break;
                        tmp+=l-j-1;
                        l--;j--;
                    }
                    else
                    if(k<=n&&(j<1||k-r-1<l-j-1))
                    {
                        if(tmp+k-r-1>s)break;
                        tmp+=k-r-1;
                        r++;k++;
                    }                    
                }
                ans=max(ans,r-l+1);
            }
            printf("%d
    ",ans);
        }
        return 0;
    
    }
    “Make my parents proud,and impress the girl I like.”
  • 相关阅读:
    Uva 11991 Easy Prblem from Rujia Liu ?
    BANK && IT
    随机数发生器(对拍)-----对比测试
    HDU 1695(GCD)
    欧拉定理与费马定理,离散对数定理
    POJ 2352 (stars)
    线段树
    codeforces 51C(Three Base Stations)
    codeforces 165B(Burning Midnight Oil)
    POJ 2785(4 Values whose Sum is 0)
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/9549757.html
Copyright © 2011-2022 走看看