zoukankan      html  css  js  c++  java
  • Broken Necklace 坏掉的项链 USACO 模拟(易错)

    1004: 1.1.4Broken Necklace 坏掉的项链

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 11  解决: 9
    [提交] [状态] [讨论版] [命题人:外部导入]

    题目描述

    1.1.4Broken Necklace 坏掉的项链 

    (beads.pas/c/cpp) 

    题目描述 

    你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的。 这里是 n=29 的二个例子: 

                    1 2                               1 2
                r b b r                           b r r b
              r         b                       b         b
             r           r                     b           r
            r             r                   w             r
           b               r                 w               w
          b                 b               r                 r
          b                 b               b                 b
          b                 b               r                 b
           r               r                 b               r
            b             r                   r             r
             b           r                     r           r
               r       r                         r       b
                 r b r                             r r w
                 图片 A                             图片  B
                     
                                 r 代表 红色的珠子      
                                 b 代表 蓝色的珠子   
                                 w 代表 白色的珠子
    

    第一和第二个珠子在图片中已经被作记号。
    图片 A 中的项链可以用下面的字符串表示: 

     brbrrrbbbrrrrrbrrbbrbbbbrrrrb
    

    假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收集的不同)。 确定应该在哪里打破项链来收集到最大数目的珠子。
    例如,在图片 A 中的项链中,在珠子 9 和珠子 10 或珠子 24 和珠子 25 之间打断项链可以收集到8个珠子。 

    白色珠子什么意思?

    在一些项链中还包括白色的珠子(如图片B) 所示。
    当收集珠子的时候,一个被遇到的白色珠子可以被当做红色也可以被当做蓝色。
    表现含有白珠项链的字符串将会包括三个符号 r , b 和 w 。
    写一个程序来确定从一条被给出的项链可以收集到的珠子最大数目。 

    程序名称

    beads 

    输入格式

    第 1 行: N, 珠子的数目
    第 2 行: 一串长度为N的字符串, 每个字符是 r , b 或 w。 

    样例输入

    (文件 beads.in) 

    29 
    wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
    

    输出格式

    单独的一行 最大可能取得的珠子数 

    样例输出

    (文件 beads.out) 

    11

    提示

      
     

    来源/分类

     
     
     
    天哪简直太惨了 这么简单的一道题竟然调了30分钟 呜呜呜呜
     
    先贴代码再讲讲吧  超级无敌复杂代码
    我用的是思路2 但是有很多特殊情况没有考虑到
     
    1.rwwwwb要是从左往右扫 我一开始的判断是只要s[i]==s[i+1] || s[i]=='w' || s[i+1]=='w'
    在这里就不行了 b和上一个w是可以匹配的 但是和一开始的r不一样
    所以我就加了
    第7-9行那一段就是考虑了上面的特殊情况 找到第一个非w的字母
     
    2. bbbb
    我之前是从左往右到头扫一遍 反过来从尾到头再扫一遍 答案就出来了8
    应该判断如果从左往右扫的时候扫到了头就不用再从右往左扫了
    并且从右往左扫只需要到从左往右扫最末到达的那个位置和后一个位置就行了O(∩_∩)O哈哈~
    还是不熟练 需要加油啊
    代码来啦(特别长)
     
     
     
     
     
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int l,r;
     4 char s[705];
     5 int check(){
     6     int sum=1;
     7     char c;int index=l;
     8     while(s[index]=='w') index++;
     9     c=s[index];
    10     int i;
    11     for(i=l+1;i<=r;i++){
    12         if(s[i]==s[i-1]||s[i]=='w') sum++;
    13         else if(s[i-1]=='w'&&s[i]==c) sum++;
    14         else break;
    15     }
    16     int fanwei=i-1;
    17     index=r;
    18     while(s[index]=='w'&&index>fanwei) index--;
    19     c=s[index];
    20     if(fanwei==r)
    21         return sum;
    22     sum++;
    23     for(i=r-1;i>fanwei;i--) {
    24         if(s[i]==s[i+1]||s[i]=='w') sum++;
    25         else if(s[i+1]=='w'&&s[i]==c) sum++;
    26         else break;
    27     }
    28     return sum;
    29 }
    30 int main(){
    31     int len; 
    32     cin>>len>>s;    
    33     int maxn=-1;
    34     l=0;r=len-1;
    35     for(int i=1;i<=len;i++)
    36     {
    37         maxn=max(maxn,check());
    38         l++;r++;
    39         s[r]=s[l-1];
    40     }
    41     cout<<maxn;
    42 }
  • 相关阅读:
    ABP 基于DDD的.NET开发框架 学习(四)时间控件采用datetimepicker注意事项
    解决Vs控制台程序出现NuGetprofile.ps1,因为在此系统上禁止运行脚本错误时或提示:“无法加载文件 .nugetpackagesMicrosoft.EntityFrameworkCore.Tools1.1.0-preview4-final oolsinit.ps1,因为在此系统上禁止运行脚本”
    git 本地初始化项目操作
    php(thinkphp)在linux系统下pdf转png图片【转】
    git学习笔记
    git 2.4.5编译安装
    mysql占用内存高的问题
    vmware下虚拟机centos,root登录时候提示鉴定故障解决方法
    SSH.net之主程序
    SSH.net之Service层
  • 原文地址:https://www.cnblogs.com/Tidoblogs/p/11285951.html
Copyright © 2011-2022 走看看