模拟+贪心——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 ...
随机推荐
- Python:获取当前py的文件名
采用pathlib库 from pathlib import Path Path(__file__).name
- 解决通过vmware克隆虚拟机后,无法上网的问题
注意:如果源主机是CentOS 6.8,复制出来的机器会出现无法上网. 如果源主机是CentOS 7,复制出来的机器可以正常上网.复制后,只要改下IP地址即可上网. 出现该问题的原因是,我们克隆后,将 ...
- BBS论坛 自定义form组件
二.自定义form组件 from django import forms from django.forms import widgets from app01 import models # 定制f ...
- JS对象 返回/设置年份方法 get/setFullYear() 返回/设置年份,用四位数表示。.顺序格式依次为:星期、月、日、年、时、分、秒、时区。(火狐浏览器)
返回/设置年份方法 get/setFullYear() 返回/设置年份,用四位数表示. var mydate=new Date();//当前时间2014年3月6日 document.write(myd ...
- vue使用CDN全局安装百度地图
参考: https://www.zhangshengrong.com/p/O3aA7x5X4E/ 一.在public/index.html中引入cdn <script src="htt ...
- QT之发布
https://blog.csdn.net/qq_40194498/article/details/79926054打开windows控制台直接输入 windeployqt --help 可以知道想要 ...
- 利用 Dockerfile 定制镜像
镜像的定制实际上就是定制每一层所添加的配置.文件. 如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像, 那么之前提及的无法重复的问题.镜像构建透明性的问题.体 ...
- 一个有关group by的错误
事例:查询有奖金的每个部门的部门名和部门的领导编号和该部门的最低工资 SELECT department_name,MIN(salary),departments.manager_idFROM dep ...
- C++相对路径和绝对路径
学习备忘 转自:http://www.cnblogs.com/vranger/p/3820783.html 电脑硬盘E盘下,建文件夹“test”,"test"下建立子文件夹“fil ...
- Java 巴什博弈(取石子报数问题)
巴什博弈:有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 规律:如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一 ...