「日常训练」「小专题·USACO」 Broken Necklace(1-2)
2024-09-02 21:46:04
题意
圆形链条,打断一处可以形成一条链。问在哪个地方开始打断,能够形成最大的连续颜色(白色视作同样的颜色)?
分析
说起来很高级,但是我们实际上并不需要穷举打断的地方,只需要把串重复三回啊三回。然后从第二个串的左边开始循环找连续颜色的“初始色”(如果是白色,那么左右看看),在初始色的左右找相同。可以看出共有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;
}
最新文章
- 关于so文件cp覆盖导致调用者core的研究
- Android studio打开之后 cannot load project: java.lang.NUllpointerException
- Python的平凡之路(19)
- zTree+EasyUi做权限遇到的小问题
- Linux 中断详解 【转】
- mysql错误用法insert into where
- Using GET_GROUP_SELECTION For Record Groups in Oracle Forms
- Qt之QSizePolicy
- php自动转换pfx到pem和cer(dem格式)到pem
- c#(asp.net)杂谈笔记
- ActiveX异步回调JavaScript
- Eclipse配置
- 05 Linux字符驱动---静态注册
- SSM框架——Spring+SpringMVC+Mybatis的搭建教程
- nagios 数据更新不及时的问题
- 【转】如何使用slave_exec_mode优雅的跳过1032 1062的复制错误
- 跨域问题实践总结!下( [HTML5] postMessage+服务器端(反向代理服务器+CORS Cross-Origin Resource Sharing))
- 基于令牌桶算法实现的SpringBoot分布式无锁限流插件
- Vim内直接使用p粘贴系统剪切板
- AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI【转】