紧跟jk大佬的步伐 这道题哇 因为机器一能生成回文串 所以我们只要用manacher跑一遍求出q【i】这样就把问题转化成了类似线段覆盖的题目 贪心就好了 至于,BIT优化dp我不会所以直接贪心了 注意答案是所需线段减一 因为是合并两条需要一次二机器 当然我ans(答案)直接初始化了0 懒得减一了 剩下的看代码吧

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=;
char s[M];
int p[M],sum,len;
struct node{int l,r;}e[M];
bool cmp(node a,node b){
if(a.l!=b.l) return a.l<b.l;
return a.r>b.r;
}
void add(int x,int y){sum++; e[sum].l=x; e[sum].r=y;}
void manacher(){
len=strlen(s);
memset(p,,sizeof(p));
for(int i=len;i>=;i--) s[i*+]=s[i],s[i*+]='#'; s[]='&';
int id=; len=len*;
for(int i=;i<=len;i++){
if(id+p[id]>i) p[i]=min(p[id*-i],id+p[id]-i);
else p[i]=;
while(s[i-p[i]]==s[i+p[i]]) p[i]++;
if(i+p[i]>id+p[id]) id=i;
add(i-p[i]+,i+p[i]-);
}
}
void push_ans(){
int r=e[].r,ans=,k=;
while(r<len){
int now=r;
while(k<=sum&&e[k].l<=r) now=max(now,e[k].r),k++;
ans++; r=now;
}
printf("%d\n",ans);
}
int main()
{
while(~scanf("%s",s)){
sum=; manacher();
sort(e+,e++sum,cmp);
//for(int i=1;i<=sum;i++) printf("[%d %d]\n",e[i].l,e[i].r);
push_ans();
}
return ;
}

bzoj3790 manacher算法+贪心的更多相关文章

  1. HDU 5371 Hotaru&#39;s problem(Manacher算法+贪心)

    manacher算法详见 http://blog.csdn.net/u014664226/article/details/47428293 题意:给一个序列,让求其最大子序列,这个子序列由三段组成, ...

  2. 【学习笔记】Manacher算法

    本文部分图片来源 代码来源(代码是学姐哒.. 一.引入 Manacher算法是用来求最长回文子串的算法,时间复杂度O(n). 回文子串指的是''aacaa'',''noon'',这种正着反着读都一样的 ...

  3. manacher算法学习(求最长回文子串长度)

    Manacher总结 我的代码 学习:yyb luogu题目模板 xzy的模板 #include<iostream> #include<cstdlib> #include< ...

  4. HDU3068 回文串 Manacher算法

    好久没有刷题了,虽然参加过ACM,但是始终没有融会贯通,没有学个彻底.我干啥都是半吊子,一瓶子不满半瓶子晃荡. 就连简单的Manacher算法我也没有刷过,常常为岁月蹉跎而感到后悔. 问题描述 给定一 ...

  5. manacher算法专题

    一.模板 算法解析:http://www.felix021.com/blog/read.php?2040 *主要用来解决一个字符串中最长回文串的长度,在O(n)时间内,线性复杂度下,求出以每个字符串为 ...

  6. lintcode最长回文子串(Manacher算法)

    题目来自lintcode, 链接:http://www.lintcode.com/zh-cn/problem/longest-palindromic-substring/ 最长回文子串 给出一个字符串 ...

  7. 1089 最长回文子串 V2(Manacher算法)

    1089 最长回文子串 V2(Manacher算法) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 回文串是指aba.abba.cccbccc.aaaa ...

  8. 51nod1089(最长回文子串之manacher算法)

    题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1089 题意:中文题诶~ 思路: 我前面做的那道回文子串的题 ...

  9. LeetCode 5 Longest Palindromic Substring manacher算法,最长回文子序列,string.substr(start,len) 难度:2

    https://leetcode.com/problems/longest-palindromic-substring/ manacher算法相关:http://blog.csdn.net/ywhor ...

随机推荐

  1. mutation与vuex区别

    vuex- action   1.当点发送过快,页面中渲染的内容与state中的数据不一致,vuex里面的state变得慢,且不持续更新 2.action中是可以做到页面中state中数据保持一致 责 ...

  2. nexys4-DDR开发板温度传感器ADT7420U

    1. 用这个板子做个什么功能来学习?板子上有个温度传感器,看下官方是否有例程,板子售价1780元,相当的贵,下面是I2C接口, 看下芯片的引脚图 2. 资料下载地址,得注册账号 https://ref ...

  3. vi编辑图

    vi使用方法

  4. jsp 中获取自定义变量

    首先确定El表达式的查找范围: 依次从Page.Request.Session.Application 中的 attribute属性中查找. <% String basePath = reque ...

  5. 算法搬运之BFPRT算法

    原文连接:http://noalgo.info/466.html BFPRT算法,又称为中位数的中位数算法,由5位大牛(Blum . Floyd . Pratt . Rivest . Tarjan)提 ...

  6. cocos2d-x的坐标和节点层级

  7. android:保存用户名密码等应用程序数据

    转自http://blog.sina.com.cn/s/blog_a73687bc0101dsjj.html (一)使用SharedPreferences  1.保存信息: SharedPrefere ...

  8. web3无法安装的额解决方案-----yarn命令安装web3

    凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写. --Atwood定律(Jeff Atwood在2007年提出) yarn命令详解 https://yarnpkg ...

  9. POJ 2135 Farm Tour(最小费用最大流)

    Description When FJ's friends visit him on the farm, he likes to show them around. His farm comprise ...

  10. Alpha阶段展示

    程序员杀产品经理祭天(SacrificePM)团队 1.团队成员简介和个人博客地址 故事 我们队伍的建立过程稍具戏剧性,大家看我们也颇为奇怪,这么一支8人队伍是怎么诞生的呢?其实我们原本分属三组,而第 ...