题意

圆形链条,打断一处可以形成一条链。问在哪个地方开始打断,能够形成最大的连续颜色(白色视作同样的颜色)?

分析

说起来很高级,但是我们实际上并不需要穷举打断的地方,只需要把串重复三回啊三回。然后从第二个串的左边开始循环找连续颜色的“初始色”(如果是白色,那么左右看看),在初始色的左右找相同。可以看出共有n个初始色的位置,所以算法也就是O(n2)" role="presentation">O(n2)O(n2)的复杂度。然后还有一些细节要处理。作为一条初级题目,比较锻炼这个时候的萌新的代码力。

代码

/*
ID: samhx1
LANG: C++14
TASK: beads
*/
#include <bits/stdc++.h>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (ll i = (a); i <= (b); ++i)
#define per(i, a, b) for (ll i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pi = pair<ll,ll>; signed main()
{
freopen("beads.in","r",stdin);
freopen("beads.out","w",stdout);
int n; string str; cin>>n>>str;
string judgeStr=str+str+str; // damn 0
int maxans=-1;
for(int i=n;i!=n*2;++i)
{
char clr_left=judgeStr[i-1]; int cnt_left=0; while(clr_left=='w' && cnt_left<n) // damn 1
clr_left=judgeStr[i-1-(++cnt_left)];
while((judgeStr[i-1-cnt_left]==clr_left || judgeStr[i-1-cnt_left]=='w') && cnt_left<n) //damn 2
cnt_left++; char clr_right=judgeStr[i]; int cnt_right=0;
while(clr_right=='w' && cnt_right+cnt_left<n)
clr_right=judgeStr[i+(++cnt_right)];
while((judgeStr[i+cnt_right]==clr_right || judgeStr[i+cnt_right]=='w') &&
cnt_left+cnt_right<n)
cnt_right++;
//cout<<i-n<<" "<<cnt_left<<" "<<cnt_right<<endl;
maxans=max(maxans,cnt_left+cnt_right);
}
cout<<maxans<<endl;
return 0;
}

最新文章

  1. 关于so文件cp覆盖导致调用者core的研究
  2. Android studio打开之后 cannot load project: java.lang.NUllpointerException
  3. Python的平凡之路(19)
  4. zTree+EasyUi做权限遇到的小问题
  5. Linux 中断详解 【转】
  6. mysql错误用法insert into where
  7. Using GET_GROUP_SELECTION For Record Groups in Oracle Forms
  8. Qt之QSizePolicy
  9. php自动转换pfx到pem和cer(dem格式)到pem
  10. c#(asp.net)杂谈笔记
  11. ActiveX异步回调JavaScript
  12. Eclipse配置
  13. 05 Linux字符驱动---静态注册
  14. SSM框架——Spring+SpringMVC+Mybatis的搭建教程
  15. nagios 数据更新不及时的问题
  16. 【转】如何使用slave_exec_mode优雅的跳过1032 1062的复制错误
  17. 跨域问题实践总结!下( [HTML5] postMessage+服务器端(反向代理服务器+CORS Cross-Origin Resource Sharing))
  18. 基于令牌桶算法实现的SpringBoot分布式无锁限流插件
  19. Vim内直接使用p粘贴系统剪切板
  20. AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI【转】

热门文章

  1. Android学习笔记_8_使用SharedPreferences存储数据
  2. 网页静态化技术Freemarker
  3. Node.js 笔记01
  4. python-time、datetimme模块
  5. 微信小程序【消息推送服务器认证C# WebAPI】
  6. SpringMVC 导入导出Excel文件
  7. ionic 安装步骤
  8. CommonJs模块规范
  9. JDBC编程:获取数据库连接
  10. JS的Ajax对象