模拟+贪心——cf1131E
超级恶心的题,写了好久,直接倒序模拟做,但是网上有博客好像是直接正序dp做的。。
因为左端点和右端点是永远不会变的,然后情况要考虑全
/*
从后往前插
只要记录左连续,右连续,中间连续
左端点一定是L,右端点一定是R
*/
#include<bits/stdc++.h>
#include<string>
using namespace std;
#define maxn 100005
string s[maxn];
int n,len1,len2,ans,flag;
char L,R,c;
int main(){
cin>>n;
for(int i=;i<=n;i++)cin>>s[i];
int len=s[n].size();
L=s[n][],R=s[n][len-];
for(int i=;i<len;i++)
if(s[n][i]==L)len1++;
else break;
for(int i=len-;i>=;i--)
if(s[n][i]==R)len2++;
else break;
ans=;
int cnt=;
for(int i=;i<len;i++)
if(s[n][i]==s[n][i+])ans=max(ans,++cnt);
else cnt=; if(L==R && ans==len)flag=;//当前串同色 for(int i=n-;i>=;i--){
len=s[i].size();
//维护ans
int tmpl=,tmpr=,cntl=,cntr=;
for(int j=;j<len;j++)//求最长的和L同色的连续块
if(s[i][j]==L)
cntl=max(cntl,++tmpl);
else tmpl=; for(int j=;j<len;j++)//求最长的和R同色的连续块
if(s[i][j]==R)
cntr=max(cntr,++tmpr);
else tmpr=; if(flag){//如果t串同色
ans=max(ans,cntl*(len1+)+len1);
}
else {//如果t串不同色
if(cntl)
ans=max(ans,+len1);
if(cntr)
ans=max(ans,+len2);
if(L==R &&cntl &&cntr)
ans=max(ans,+len1+len2);
} if(flag){ //维护前后缀长度
tmpl=len1,tmpr=len2;
for(int j=;j<len;j++)
if(s[i][j]==L)len1+=(+tmpl);
else {flag=;break;}
for(int j=len-;j>=;j--)
if(s[i][j]==R)len2+=(+tmpr);
else {flag=;break;}
} ans=max(ans,max(len1,len2));
}
cout<<ans<<endl;
}
模拟+贪心——cf1131E的更多相关文章
- BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]
1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec Memory Limit: 162 MBSubmit: 3785 Solved: 1747[Submit][Statu ...
- Codeforces Round #375 (Div. 2) A B C 水 模拟 贪心
A. The New Year: Meeting Friends time limit per test 1 second memory limit per test 256 megabytes in ...
- Codeforces 452D [模拟][贪心]
题意: 给你k件衣服处理,告诉你洗衣机烘干机折叠机的数量,和它们处理一件衣服的时间,要求一件衣服在洗完之后必须立刻烘干,烘干之后必须立刻折叠,问所需的最小时间. 思路: 1.按照时间模拟 2.若洗完的 ...
- bzoj 2457 [BeiJing2011]双端队列 模拟+贪心
[BeiJing2011]双端队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 457 Solved: 203[Submit][Status][D ...
- bzoj 3671: [Noi2014]随机数生成器【模拟+贪心】
降智好题 前面随机部分按照题意模拟,然后字典序贪心,也就是记录每个值的位置从1~nm依次看能不能取,能取的话更新行的取值范围(它上面的行一定取的列小于等于这个数取的列,下面行大于等于) #includ ...
- ZOJ 3829 模拟贪心
2014牡丹江现场赛水题 给出波兰式,推断其是否合法.假设不合法有两种操作: 1:任何位置加一个数字或者操作符 2:随意两个位置的元素对调 贪心模拟就可以 先推断数字数是否大于操作符数,若不大于 an ...
- 洛谷 P1016 旅行家的预算 模拟+贪心
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1016 旅行家的预算 题目描述 一个旅行家想驾驶汽车 ...
- 洛谷P5019 铺设道路 题解 模拟/贪心基础题
题目链接:https://www.luogu.org/problemnew/show/P5019 这道题目是一道模拟题,但是它有一点贪心的思想. 我们假设当前最大的深度是 \(d\) ,那么我们需要把 ...
- Codeforces Round #370 (Div. 2) A B C 水 模拟 贪心
A. Memory and Crow time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
随机推荐
- 一幅图解决R语言绘制图例的各种问题
一幅图解决R语言绘制图例的各种问题 用R语言画图的小伙伴们有木有这样的感受,"命令写的很完整,运行没有报错,可图例藏哪去了?""图画的很美,怎么总是图例不协调?" ...
- Docker Api 实测
好久没写博客,工作中想着未来部门需要对docker进行维护相对麻烦,而且,网络上也缺少一些合适的项目,于是准备筹划自己动手.先找到了Docker 的API文档,地址是:https://docs.doc ...
- Python3数据分析与挖掘建模实战✍✍✍
Python3数据分析与挖掘建模实战 Python数据分析简介 Python入门 运行:cmd下"python hello.py" 基本命令: 第三方库 安装 Windows中 p ...
- selenium基础(滚动条操作)
滚动条操作:当待操作的元素在页面可是区域外时,要将待操作的元素滚动到可视区域当中 步骤:1.先找要将要操作的元素element = driver.find_element_by_xxxx(" ...
- Selenium(二)---无界面模式+滑动底部
一.使用无界面模式 1.正常情况启动 selenium 是有界面的 2.有些情况下,需要不显示界面,这时只要设置一下参数就可以实现了 # 不想显示界面可以用 Chrome——配置一下参数就好 from ...
- C++ 系列:函数可变长参数
一.基础部分 1.1 什么是可变长参数 可变长参数:顾名思义,就是函数的参数长度(数量)是可变的.比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的.下面是 printf ...
- IDEA快捷键(收集自网络后整理)
快捷键 说明 CTRL+B 快速打开光标处的类或方法 CTRL+C 拷贝 CTRL+D 复制当前行到下一行 CTRL+E 最近打开的文件 CTRL+F 当前文件查找特定内容 CTRL+G 定位行 CT ...
- [JZOJ3320] 【BOI2013】文本编辑器
题目 题目大意 给你一个文本,要删去其中所有的'e'. 有三种操作: h光标左移. x删除光标上面的字母(光标是横着的). fc跳到后面的第一个字符为'c'的位置. 问操作序列的最短长度. 思考历程 ...
- 阿里云在云栖大会发布SaaS加速器3.0版最新成果,让天下没有难做的SaaS
2019年杭州·云栖大会顺利落幕,超过6万人次观展,200余位顶尖科学家分享了前沿技术.作为“阿里云不做SaaS”,坚持“被集成”战略的落地体现,阿里云SaaS加速器在云栖大会现场发布了SaaS加速器 ...
- JSOI 2008 魔兽地图
题目描述 DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Ancients) ...