USACO Broken Necklace

Usaco 1.1.4 破碎的项链(Broken Necklace) 题目:  破碎的项链 来源:  Usaco1.1.4 题目大意:  一个长度为N,由w、r、b字母组成的长链,w=r或者b,求从哪里断开可以向左向右得  到最长的一条有相同字母组成的链 数据范围: 阅读详情

按题目给的tips,s+=s;之后从头开始遍历,找到所有的r...w...b结构,记录首尾两个offset然后向左右遍历,遇到w或者与对应的offset处一样的话长度就++;


坑:
最后结果如果大于n说明有重复
如果为0说明全为w

防止漏掉结尾一段,手动给结尾处一个断


代码:
变量解释:

n长度;s字符串;tc储存遍历时当前的颜色;of1,of2前后两个偏移;tof1,tof2临时;almax最长长度;tmax临时长度;

/*
ID: windroid
LANG: C++
TASK: beads
*/
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main(){
    ifstream fin("beads.in");
    ofstream fout("beads.out");
    int n;
    string s;
    fin>>n>>s;
    //cin>>s;
    s+=s;
    char tc=0;
    int of1=0,of2=0;
    int almax=0;
    for(int i=0;i<2*n;i++){
        if(tc==0&&s[i]!='w'){
            tc=s[i];
            of1=i;
        }
        if(s[i]!='w'&&s[i]!=tc||i==2*n-1){
           // cout<<"|"<<i<<"|";
            //cout<<"|";
            if(of2!=0){
                of1=of2;
            }
            tc=s[i];
            of2=i;
            int tmax=of2-of1+1;
            int tof1=of1,tof2=of2;
            while(tof1>0&&(s[tof1-1]=='w'||s[tof1-1]==s[of1])){
                tmax++;
                tof1--;
            }
            while(tof2<2*n-1&&(s[tof2+1]=='w'||s[tof2+1]==s[of2])){
                tmax++;
                tof2++;
            }
           // if(tmax==73) cout<<tof1<<"=="<<tof2<<endl;
            if(tmax>almax){
                almax=tmax;
            }
        }
       // cout<<s[i];
    }
    //cout<<endl<<almax<<endl;
    if(almax==0||almax>=n) almax=n;
    fout<<almax<<endl;
    return 0;
}


[USACO 1.1.4] Broken necklace 解答 题目: 你有一条由 N 个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里 是 n=29 的二个例子 : 1 2 1 2 r b b r b r r b r b b b r r 阅读详情

相关推荐

USACO——Broken Necklace 坏掉的项链

你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3 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 代表 白色的珠子

qzhhehe的专栏 807

【USACO1.1】Broken Necklace

题意 一个环形项链,有rbw三种珠子,r代表red,b代表blue,w代表white,从任意一个位置断开,两端分别取珠子,同一端取的珠子要相同颜色,w可以染成想要的颜色,即既可当作r也可以当作b,求最多取得的珠子个数。最多有350个珠子。 分析 可以枚举断开的位置,然后模拟取珠子。也可以枚举起点位置。还可以dp做。 代码 枚举断点 #include&l...

dingguayi7025的博客 204

USACO题目Broken Necklace (beads)及代码解析

USACO题目Broken Necklace (beads)及代码解析

P1203 [USACO1.1] 坏掉的项链 Broken Necklace(模拟)

题意: 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收集的不同)。 确定应该在哪里打破项链来收集到最大数目的珠子。 思路: 看是dp,但是实际上可以当做模拟题做,暴力的枚举断点,然后模拟往左找,往右找,输出最大的值,但是由于有个万能的w,处理的十分麻烦,这里有给很清晰的代码,贴贴 #include<bi

RIPKEY的博客 467

Broken Necklace(参考解析)

很容易看懂的usaco上的代码实现。希望对大家有帮助

开源网格划分软件-Gmsh二次开发教程 (4)网格生成与控制​

​本章将深入讲解Gmsh的网格生成技术,包括全局/局部网格控制、边界层生成、自适应细化等,并提供完整的代码示例。

ZQGG的博客 1472

[USACO1.1]坏掉的项链Broken Necklace 题解

终于AC了一道(wei)( suo)的水题题目本身不难,只是很坑。真的很坑......这里题目大意解释一下:就是有一个项链,在项链的某处咔擦,然后得到一条直线然后从两端开始取,遇到不同颜色的就停止取。当然,这个题目中还有一个神奇的地方,让整个题目不仅难了不少,也坑了不少。这个神奇的地方就是白色珠子可以当红色或蓝色的用。一个坑点:千万不要用一下代码:string a; char b[500]={"1...

qq_28753451的博客 864

OpenHarmony系统参数权限配置避坑指南:从param get/set失败到SELinux标签实战

本文深入解析OpenHarmony系统参数权限配置的常见问题与解决方案,涵盖DAC和SELinux双重权限控制机制。通过实战案例演示如何配置`param get/set`权限,解决'Permission denied'错误,并提供三方应用访问参数的安全方案,帮助开发者高效完成系统调试与优化。

weixin_27013291的博客 448

usaco Broken Necklace (串珠子_最大值)

You have a necklace of N red, white, or blue beads (3 1 2 1 2 r b b r b r r b r b

AK_HuangYC的博客 567

CMU开源NavRL:深度强化学习如何破解无人机动态避障难题?

卡内基梅隆大学(CMU)开源了NavRL框架,利用深度强化学习解决无人机在复杂环境中的动态避障难题。该框架通过创新的状态表示、多目标奖励函数设计以及独立的安全屏障机制,使无人机能够通过仿真训练自主学会灵活、安全的导航策略,并成功实现从仿真到真实环境的零样本迁移。

hope8的博客 720

医学影像处理实战:如何用Python+SimpleITK搞定DICOM/NIfTI重采样(附完整代码)

本文详细介绍了如何使用Python和SimpleITK库实现医学影像(DICOM/NIfTI格式)的智能重采样技术。通过实战代码演示,帮助读者掌握医学图像处理中的关键步骤,包括环境搭建、数据准备、核心算法实现和质量验证,解决医学AI领域中的影像标准化难题。

linux的博客 981

USACO TRAINING - PROB Broken Necklace

本文记录的是USACO练习题-Broken Necklace题目descriptionYou have a necklace of N red, white, or blue beads (3<=N<=350) some of which are red, others blue, and others white, arranged at random. Here are two examples

BIG BOAT的博客 294

LVGL移植教程(正点原子)

学习正点原子LVGL移植教程,根据视频教程写的博客

papalila的博客 939

USACO 1.2 Broken Necklace

USACO 1.2 Broken Necklace 题目 见落谷 分析 这是第一道开始有点麻烦的USACO的题目。朴素的想法是模拟数珠子的过程,遍历一边就可以得到最终答案了,但是 有几个坑要考虑好(好像USACO本身设计的案例还是很简单的),比如全白珠子,或是重叠数了白珠子。看了官方解 还有dp的解法,真是orz,先上个人的解,有时间再研究一下官方的。 代码 注释处...

蟋蟀的博客 254

OpenCV实战之人脸美颜美型(八)——大眼(上)

从大众审美的角度来看,眼睛适当的“变大”会让人显得更加年轻。因此美型中就有一项大眼功能,其效果就是让眼睛适当变大,这章内容就围绕着大眼算法展开。

On my way 1211

第二天 原来Labview语言结构也挺自然(2.1 顺序结构)

新建项目文件StructureTest.lvproj,新建四个子VI(FlatSequence.vi、CaseStructure.vi、LoopStructure.vi、EventStructure.vi),具体新建流程可以参考1.2节。

weixin_38637405的博客 1002

[USACO Training] Broken Necklace (DP)

Broken Necklace 题目大意: 有一串项链,有红色(r),白色(w),蓝色(b)组成,现在从任意位置把项链断开,从断开的两头分别向项链中间遍历。以左端为例,如果左端第一个为红色,那么从左开始取出所有红色,直到碰到蓝色停止。问最多可以从这串项链中取走多少珠子。(白色既可以当做红色,也可以当做蓝色) 解题思路: O(N^2) 由于珠子数不多,最多350颗。那我们可以用纯暴

SIOFive的专栏 1265

Python 爬虫实战:付费 IP 代理使用技巧与爬虫稳定性优化

付费IP代理实战指南:突破反爬与优化稳定性 本文系统讲解付费IP代理在爬虫项目中的高效应用方法。首先对比分析静态代理、动态代理和隧道代理的优缺点及适用场景,推荐高并发项目优先选择隧道代理。然后详细演示了主流代理服务商的集成方法,包括代理池的自动更新和健康检测机制。核心部分重点介绍了爬虫稳定性优化策略,如智能重试、频率控制和请求间隔优化等关键技术。最后通过压力测试验证优化效果,并提供成本控制方案,包括代理复用、错峰爬取等实用技巧。通过本教程,开发者可有效解决高并发爬虫中的IP封禁问题,显著提升系统稳定性和抗风

2503_91057718的博客 2449

USACO - 1.1.4 - Broken Necklace

USACO - 1.1.4 - Broken Necklace 题目很好懂,思路也很清晰,不就是暴力找断点然后正反各跑一遍,但是这个白色珠子的设定卡了我一上午,连样例都没有过,后来去参考别人的代码,发现了一种已经被我遗忘的处理方法,就是把字符串再加一遍,这样就比我之前写的这个题的代码要更好操作了 有一些细节,需要进行处理,比如如果是白色珠子开头或者为结尾,就要让它变成最近的珠子的颜色,这样才能保证从头到尾或者从尾部到头,尽可能的有最大连续相同颜色的珠子 大部分解释,都以注释的形式写在代码里了 #includ

CUCUC1的博客 222

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

USACO-Section1.1 Broken Necklace

2017-05-25题目大意:你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的。 这里是 n=29 的二个例子: 1 2 1 2 r b b r b r r b r b

Jane_96的博客 510

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

P1203 [USACO1.1]坏掉的项链Broken Necklace

题目描述你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3&lt;=N&lt;=350),珠子是随意安排的。 这里是 n=29 的二个例子:第一和第二个珠子在图片中已经被作记号。图片 A 中的项链可以用下面的字符串表示:brbrrrbbbrrrrrbrrbbrbbbbrrrrb假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样...

Ant_e_zz的博客 438

[USACO1.1]坏掉的项链Broken Necklace

题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3&lt;=N&lt;=350),珠子是随意安排的。 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号。 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的...

Every Master was once a disaster or beginner. 298

USACO1.1.4 Broken Necklace 破碎的项链

一.题目要求 Broken Necklace You have a necklace of N red, white, or blue beads (3 1 2 1 2 r b b r b r r b

ge_rui_jun的专栏 1604

[LuoguP1203][USACO1.1]P1203 Broken Necklace

Solution 这道题数据规模奇小,因此大部分人都使用了暴力搜索的方法,这也是我一开始的想法。 对于 100100%100 的数据,3≤n≤3503≤n≤3503≤n≤350 的确可以如此,但暴力搜索的方法也需要进行一些奇怪的判断,因此我又决定直接打dp的解法,其实dp也是很自然的一种想法…… Dynamic Programming 我们可以发现,每个点向左向右,取蓝色取红色能连续取的个数一...

The Clouder's 292

[USACO1.1.4]坏掉的项链Broken Necklace

P1203 [USACO1.1]坏掉的项链Broken Necklace 标签 搜索/枚举 USACO 难度 普及- 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3 第一和第二个珠子在图片中已经被作记号。 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链

但行好事,莫问前程. 1995
上一篇: GetProcAddress()
下一篇: Python post test
windroid
博客等级 码龄12年 28粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值