• USACO2012 Broken necklace /// DP oj10103


    题目大意:

    项链最长的纯色连续段,“w”即white白色珠子,可任意涂为红或蓝,“r” “b”即红 蓝。

    Input

    Line 1:  N, the number of beads

    Line 2:  a string of N characters, each of which is rb, or w

    Output

    A single line containing the maximum of number of beads that can be collected from the supplied necklace.

    Sample Input

    29
    wwwbbrwrbrbrrbrbrwrwwrbwrwrrb

    Sample Output

    11

    DP算法

    *先复制相同的一段 拼接在一起 以模拟项链的环状

    #include <bits/stdc++.h>
    using namespace std;
    typedef struct node
    {
        int lr,lb,rr,rb;            ///左右的red blue珠数量
    }beans;
    int main()
    {
        beans bean[800];
        char br[800],brr[400];
        int n; scanf("%d%s",&n,br);
        strcpy(brr,br);
        strcat(br,brr);
    
        bean[0].lr=bean[0].lb=0;
        for(int i=1;i<=2*n;i++)
        {
            if(br[i-1]=='r')
                bean[i].lr=bean[i-1].lr+1,
                bean[i].lb=0;
            else if(br[i-1]=='b')
                bean[i].lb=bean[i-1].lb+1,
                bean[i].lr=0;
            else
                bean[i].lb=bean[i-1].lb+1,
                bean[i].lr=bean[i-1].lr+1;
        }
    
        bean[2*n].rr=bean[2*n].rb=0;
        for(int i=2*n-1;i>=0;i--)
        {
            if(br[i]=='r')
                bean[i].rr=bean[i+1].rr+1,
                bean[i].rb=0;
            else if(br[i]=='b')
                bean[i].rb=bean[i+1].rb+1,
                bean[i].rr=0;
            else
                bean[i].rb=bean[i+1].rb+1,
                bean[i].rr=bean[i+1].rr+1;
        }
    
        int m=0;
        for(int i=0;i<2*n;i++)
            m=max(m,max(bean[i].lr,bean[i].lb)+max(bean[i].rr,bean[i].rb));
        if(m>n) m=n;
        printf("%d
    ",m);
        return 0;
    }
    View Code
  • 相关阅读:
    [Codeforces 1290C]Prefix Enlightenment
    [JLOI 2015]战争调度
    [APIO 2010]特别行动队
    [CEOI 2004]锯木厂选址
    [USACO 08MAR]土地购买
    [HNOI 2017]大佬
    [NOI 2011]NOI 嘉年华
    [SHOI 2013]超级跳马
    [NOI 2005]瑰丽华尔兹
    [SCOI 2010]股票交易
  • 原文地址:https://www.cnblogs.com/zquzjx/p/8321436.html
Copyright © 2020-2023  润新知