题面

这道题竟然是E?还是洛谷中的黑题?

wow~!!

于是就做了一下;

然后一下就A了;(这并不代表想的容易,而是写的容易)

这道题就是骗人的!!

什么manacher,什么回文自动机,去靠一边站着,看我的无敌大模拟!

可以设定l,r两个点,初始时分别指向1和n;

如果是s[l]==s[r],那么答案就更新(ans+=2,但当l==r时,ans仅加1就够了);

如果不等,那么就回文自动......诶?等等,题目说只有a,b,c?而且相邻的两位不等?蛤?这是什么情况?

如果s[i]!=s[j],因为s[j-1]!=s[j],s[i+1]!=s[i],所以至少就是以下几种情况中的一种,s[i+1]==s[j],s[i]==s[j-1],s[i+1]==s[j-1];

然后对其模拟,然后就轻松愉快的A啦~

#include <bits/stdc++.h>
using namespace std;
int n;
char s[];
bool bo[];
int cnt;
int main() {
scanf("%s", s + );
int l=,r=;
n=r=strlen(s + );
while(l <= r){
if(s[l] == s[r]){
bo[l] = bo[r] = ;
cnt+=;
if(l==r){
--cnt;
}
++l;
--r;
}
else if(l+<=r&&s[l+]==s[r]){
bo[l+]=bo[r]=;
cnt+=+(l+!=r);
l+=, --r;
}
else if (l<=r-&&s[l]==s[r-]){
bo[l]=bo[r-]=;
cnt+=+(l!=r-);
++l, r-=;
}
else{
++l, --r;
}
}
if(cnt>=n/){
for(int i=;i<=n;i++){
if(bo[i]){
printf("%c",s[i]);
}
}
puts("");
}
else{
puts("IMPOSSIBLE");
}
return ;
}

最新文章

  1. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 2
  2. Sprint1(第七天11.20)
  3. 《Unix网络编程 卷I》思维导图
  4. 1.python基础入门
  5. Winform窗口弹出位置控制
  6. lubuntu12.11 source.list
  7. shell编程笔记(基本部分)
  8. Model-View-Presenter(MVP)
  9. 设计师和开发人员更快完成工作需求的20个惊人的jqury插件教程(上)
  10. MFC下对串口的操作以及定时器的调用
  11. Swift语言中与C/C++和Java不同的语法(三)
  12. kubernetes实践之一:kubernetes二进制包安装
  13. [BZOJ 1095] [ZJOI 2007] 捉迷藏
  14. Mongodb 集群实战
  15. 4星|《门口的野蛮人2》:美国宝万之争专业户KKR公司的疯狂借债收购史
  16. Web项目开发流程 PC端
  17. [wx]自然数学规律
  18. Linux配置python和pip环境
  19. 代码生成器 CodeSmith 的使用(三)
  20. jar 包和 mysql 服务器部署

热门文章

  1. Java多线程和并发(十),JMM(Java内存模型)
  2. python动态的添加方法
  3. PTA 道长你想怎么死
  4. 【Spark机器学习速成宝典】模型篇01支持向量机【SVM】(Python版)
  5. .slideUp()
  6. EBS 页面影藏“关于此页”
  7. directshow播放摄像头卡死问题
  8. mysql数据库简单补充
  9. BuiltIn库
  10. 精简版 Selenium PageFactory, Annotation 实例