超级恶心的题,写了好久,直接倒序模拟做,但是网上有博客好像是直接正序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的更多相关文章

  1. BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]

    1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 3785  Solved: 1747[Submit][Statu ...

  2. 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 ...

  3. Codeforces 452D [模拟][贪心]

    题意: 给你k件衣服处理,告诉你洗衣机烘干机折叠机的数量,和它们处理一件衣服的时间,要求一件衣服在洗完之后必须立刻烘干,烘干之后必须立刻折叠,问所需的最小时间. 思路: 1.按照时间模拟 2.若洗完的 ...

  4. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心

    [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 457  Solved: 203[Submit][Status][D ...

  5. bzoj 3671: [Noi2014]随机数生成器【模拟+贪心】

    降智好题 前面随机部分按照题意模拟,然后字典序贪心,也就是记录每个值的位置从1~nm依次看能不能取,能取的话更新行的取值范围(它上面的行一定取的列小于等于这个数取的列,下面行大于等于) #includ ...

  6. ZOJ 3829 模拟贪心

    2014牡丹江现场赛水题 给出波兰式,推断其是否合法.假设不合法有两种操作: 1:任何位置加一个数字或者操作符 2:随意两个位置的元素对调 贪心模拟就可以 先推断数字数是否大于操作符数,若不大于 an ...

  7. 洛谷 P1016 旅行家的预算 模拟+贪心

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1016 旅行家的预算 题目描述 一个旅行家想驾驶汽车 ...

  8. 洛谷P5019 铺设道路 题解 模拟/贪心基础题

    题目链接:https://www.luogu.org/problemnew/show/P5019 这道题目是一道模拟题,但是它有一点贪心的思想. 我们假设当前最大的深度是 \(d\) ,那么我们需要把 ...

  9. 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 ...

随机推荐

  1. POJ-1836-Alignment-双向LIS(最长上升子序列)(LIS+LSD)+dp

    In the army, a platoon is composed by n soldiers. During the morning inspection, the soldiers are al ...

  2. Rabbit MQ 基础入门

    Rabbit MQ 学习(一)基础入门 简介 RabbitMQ 简介 为什么选择 RabbitMQ RabbitMQ 的模型架构是什么? AMQP 协议是什么? AMQP 常用命令 概念 生产者和消费 ...

  3. java调用scala 查询hbase数据

    问题:将scala打成jar包,提供给java调用,但是java一直提示找不到类 实现功能:利用spark查询hbase数据,然后提供给外部接口调用 我的方式:spark查询Hbase用scala实现 ...

  4. DLL相关下断点

    加载DLL 的时候断: sxe ld:[dll] 卸载DLL 的时候断: sxe ud:[dll] 比如: sxe ld:wininet.dll  (在wininet.dll 被装载的时候断点) 这里 ...

  5. windows域控导出hash

    #mimikaz导入域内所有hash mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.local /all /csv ...

  6. lnmp高人笔记

    http://www.cnblogs.com/qizekai/p/5878774.html http://www.cnblogs.com/qizekai/p/5879461.html

  7. spark安装及配置

    windows下spark的安装与配置教程 Windows下安装spark windows下搭建spark环境出现ChangeFileModeByMask error (3): ??????????? ...

  8. Block的Retain Cycle的解决方法

    一个使用Block语法的实例变量,在引用另一个实例变量的时候,经常会引起retain cycle.这个问题在使ASIHTTPRequest的block语法的时候会时不时的碰到.这个问题困扰了我这个小白 ...

  9. php开发面试题---php面试题英语(How do you debug a PHP application)

    php开发面试题---php面试题英语(How do you debug a PHP application) 一.总结 一句话总结: xdebug or use die() do it; 1.Whi ...

  10. 云-腾讯云-云点播:云点播(VOD)

    ylbtech-云-腾讯云-云点播:云点播(VOD) 提供端到端的一站式VpaaS音视频点播解决方案 1.返回顶部 1. 云点播(Video on Demand,VOD)基于腾讯多年技术积累与基础设施 ...