【USACO 1.1.4】破碎的项链
【题目描述】
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
【输入格式】
【输出格式】
【分析】
对于这道题,我只能说,细心,再细心。
1、注意断裂的项链两边有白色的情况。
2、拉链成环时注意已经访问过的不能再次计数。
#include <cstdlib>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
const int maxn=;
using namespace std;
int n,data[maxn*],i,vis[maxn*];
char str[maxn];
int main()
{
//文件操作
freopen("beads.in","r",stdin);
freopen("beads.out","w",stdout);
memset(data,,sizeof(data));
scanf("%d",&n);
scanf("%s",str);
for (i=;i<n;++i)//处理字符串
{
int temp;
if (str[i]=='w') temp=;//白
else if (str[i]=='b') temp=;//蓝
else temp=;//红
data[i+]=data[i+n+]=data[i+n*+]=temp;//拉环成链
}
int ans=,lj,color,point;
for (i=n+;i<=n*;++i)//在i与i+1之间打破
{
lj=;color=data[i];point=i;//指针
//防止重复计数
while (color== && point>=) color=data[--point];
point=i+;
memset(vis,,sizeof(vis));
while (point>)//左边
{
--point;
if (vis[point]) continue;
if (data[point]==color || data[point]==) ++lj;else break;
//打上标记,避免重复计数
int temp=point%n;if (temp==) temp=n;
vis[temp]=vis[temp+n]=vis[temp+*n]=;
}
color=data[i+];point=i+;//指针
while (color== && point<=*n) color=data[++point];
point=i;
while (point<*n)
{
++point;
if (vis[point]) continue;
if (data[point]==color || data[point]==) ++lj;else break;
//打上标记,避免重复计数
int temp=point%n;if (temp==) temp=n;
vis[temp]=vis[temp+n]=vis[temp+*n]=;
}
ans=max(ans,lj);
}
printf("%d",ans);
return ;
}
【USACO 1.1.4】破碎的项链的更多相关文章
- USACO . Your Ride Is Here
Your Ride Is Here It is a well-known fact that behind every good comet is a UFO. These UFOs often co ...
- 【USACO 3.1】Stamps (完全背包)
题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...
- USACO翻译:USACO 2013 NOV Silver三题
USACO 2013 NOV SILVER 一.题目概览 中文题目名称 未有的奶牛 拥挤的奶牛 弹簧牛 英文题目名称 nocow crowded pogocow 可执行文件名 nocow crowde ...
- USACO翻译:USACO 2013 DEC Silver三题
USACO 2013 DEC SILVER 一.题目概览 中文题目名称 挤奶调度 农场航线 贝西洗牌 英文题目名称 msched vacation shuffle 可执行文件名 msched vaca ...
- USACO翻译:USACO 2014 DEC Silver三题
USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 马拉松 奶牛慢跑 英文题目名称 piggyback marathon cowjog 可执行文件名 piggyback ma ...
- USACO翻译:USACO 2012 FEB Silver三题
USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...
- USACO翻译:USACO 2012 JAN三题(3)
USACO 2012JAN(题目三) 一.题目概览 中文题目名称 放牧 登山 奶牛排队 英文题目名称 grazing climb lineup 可执行文件名 grazing climb lineup ...
- USACO翻译:USACO 2012 JAN三题(2)
USACO 2012 JAN(题目二) 一.题目概览 中文题目名称 叠干草 分干草 奶牛联盟 英文题目名称 stacking baleshare cowrun 可执行文件名 stacking bale ...
- USACO翻译:USACO 2012 JAN三题(1)
USACO 2012 JAN(题目一) 一.题目概览 中文题目名称 礼物 配送路线 游戏组合技 英文题目名称 gifts delivery combos 可执行文件名 gifts delivery c ...
随机推荐
- 14.5.2.4 Locking Reads 锁定读:
14.5.2.4 Locking Reads 锁定读: 如果你查询数据然后插入或者修改相关数据在相同的事务里, 常规的SELECT 语句不能给予足够的保护. 其他事务可以修改或者删除你刚查询相同的记录 ...
- MFC中菜单栏使用
1.新建项目: 选择MFC应用程序,应用程序类型选择“基于对话框”: 本文中项目名为:MenuTest 2.新建菜单栏资源: 找到资源视图,右键MenuTest.re选择“添加资源”——选择Menu, ...
- hiho #1079 : 离散化
描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报 ...
- BZOJ1679: [Usaco2005 Jan]Moo Volume 牛的呼声
1679: [Usaco2005 Jan]Moo Volume 牛的呼声 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 723 Solved: 346[ ...
- 【扩展欧几里得】BAPC2014 I Interesting Integers (Codeforces GYM 100526)
题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...
- mysql集群安装(centos)
mysql cluster : 1. 基于NDB Cluster 的分布式数据库系统 2. mysql集群中各服务器节点不共享数据 3. 在mysql cluster中节点指的是进程,区别于其他的集群 ...
- Binary Tree Preorder Traversal —— LeetCode
Given a binary tree, return the preorder traversal of its nodes' values. For example:Given binary tr ...
- bzoj1251 序列终结者(Splay Tree+懒惰标记)
Description 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这 ...
- 实现一个servlet的helloworld小程序(不适用Eclipse)
实现一个servlet的helloworld小程序(不适用Eclipse) 1. 在tomcat中的webapps下建一个应用程序FirstServlet(C:\tomcat\webapps\Firs ...
- 导入excel 数据到mysql出现的时间格式
昨天把一张表的数据导出做修改,然后用Navcat 导入,结果总是失败,也看不出问题,说时间格式不对,我看了excel里时间格式对的,之前是excel导出的,搞 了一两个小时,今天发现导入有个选项,我的 ...