技术标签: 字符串 字符串 - KMP | EXKMP | Manacher manacher
题意:
N<=105的串,求最长回文串,并且左边的部分是不降的
分析:
计算p数组的时候判断一下就好了,−−注意′#′
代码:
//
// Created by TaoSama on 2015-11-03
// Copyright (c) 2015 TaoSama. All rights reserved.
//
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <string>
#include <set>
#include <vector>
using namespace std;
#define pr(x) cout << #x << " = " << x << " "
#define prln(x) cout << #x << " = " << x << endl
const int N = 2e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;
int n, k, p[N];
int a[N], s[N];
int manacher() {
s[0] = '@'; s[1] = '#'; n = 2;
for(int i = 0; i < k; ++i)
s[n++] = a[i], s[n++] = '#';
s[n] = 0;
int mx = 0, id, ret = 0;
for(int i = 1; i < n; ++i) {
p[i] = mx > i ? min(mx - i, p[2 * id - i]) : 1;
while(s[i - p[i]] == s[i + p[i]]) {
if(p[i] == 1 || s[i + p[i]] == '#') {}
else {
if(s[i + p[i]] > s[i + p[i] - 2]) break;
}
++p[i];
}
if(mx < i + p[i]) mx = i + p[i], id = i;
ret = max(ret, p[i] - 1);
}
return ret;
}
int main() {
#ifdef LOCAL
freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);
// freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);
#endif
ios_base::sync_with_stdio(0);
int t; scanf("%d", &t);
while(t--) {
scanf("%d", &k);
for(int i = 0; i < k; ++i) scanf("%d", a + i);
printf("%d\n", manacher());
}
return 0;
}
文章浏览阅读4.8k次,点赞4次,收藏18次。基于CUBEMX和STM32C8T6的同轴麦轮小车制作(一)——整体框架构思一、摘要拟设计一款两轮的麦轮平衡车,可以实现全向移动(但是不能转弯23333),具体实现功能为:(1)保持直立(PID调节,角度环、速度环)需要的参量:角度环PD调节:角度(陀螺仪),角加速度(陀螺仪)速度环PI调节:速度(编码器),速度积分(编码器)(2)全向移动:需要的参量:平移环PD调节:横向速度(通过编码器反馈值解算),加速度(陀螺仪)(3)可以遥控:HC-05蓝牙模块,改变目标前进速度、平移速度。(_共轴麦轮平衡车传递函数
文章浏览阅读7.6k次,点赞7次,收藏35次。前言我们学校每天需要健康打卡,是在企业微信里进行打卡的,需要定位,输入体温,点击选项,然后提交,每个学校的打卡方式肯定是有所不同的,欢迎借鉴和提问,当然如果有帮助的话,感谢一键三连啦。个人反省,可以不看作为刚入门的小白,第一次写JavaScript,进行自动化软件一、说明就是模拟点击,没什么技术含量,当时接触autojs的第一个程序写的就是这个打卡,所以真的很简单,就是很多细节需要扣,这里为了写的清楚明白,尽量把我当初遇到的问题都写下来,希望正好能解决你的问题。完整程序在最后二、详细解_autoxjs企业微信
文章浏览阅读783次。版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tangxiujiang/article/details/77718831 button的边框是用:after方式实现的,用户如果在button上定义边框会出现两条线,..._微信小程序的button自动加margin
文章浏览阅读8.1k次,点赞8次,收藏37次。Mac 安装VMware虚拟机打不开/dev/vmmon无此文件或目录在Mac系统里安装虚拟机软件VMware Fusion的时候,有的时候会提示打不开/dev/vmmon无此文件或目录,或者是断裂管道。这种情况可以到系统偏好设置里设置一下即可。工具:苹果Mac系统虚拟机软件VMware Fusion1.安装虚拟机VMware Fusion的时候,提示提示打不开/dev/vmmon:断裂管道。请确保已载入内核模块“vmmon”。2.点击“好”3.点击屏幕左上角的苹果标志4.选择“系统偏_atmwvmd
文章浏览阅读7.6k次。查看Linux内核版本和系统版本信息**一、查看Linux内核版本命令(两种方法):1、cat /proc/version2、uname -a二、查看Linux系统版本的命令(3种方法):1、lsb_release -a,即可列出所有版本信息这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。2、cat /etc/redhat-release,这..._uos系统怎么看linux的发行版本
文章浏览阅读4.4k次,点赞4次,收藏10次。Android studio-标题栏(最上面栏)文字居中-002-2020-3-25大致结构如上在res文件夹下的layout文件夹下1.新建title_name.xml文件<?xml version="1.0" encoding="utf-8"?><TextView ="http://schemas.android.com/apk/res/a..._appcompatactivity 中标题居中显示
文章浏览阅读7.9w次,点赞12次,收藏101次。转自《ZOL平板电脑论坛》,作者:脑袋不会坏 题目:《Google Play闪退报错各种问题解决以及Google框架服务的安装方法 》。网址:http://padbbs.zol.com.cn/1/197_246.html。感谢原文作者“脑袋不会坏”。太详细了,给小白的 准确 刷机教程。手把手教你。首先说说为什么教唆大家安装Google的各种框架服务还有Goo_google play 框架 安装 使用
文章浏览阅读296次。第十一章:继承和多态一.父类和子类1.继承可以使你创建一个类(父类),之后可以扩充该类为一个更加特定的类(子类)public class Circle extends GeometricObject{}Circle为子类,也可称为次类、派生类、扩展类GeometricObject为父类,也成为基类,超类extends为继承关键字2.注意子类不是父类的子集,子类通常比父类包含更多..._类circle继承父类geometricobject语法格式是什么
文章浏览阅读8.2k次,点赞3次,收藏4次。使用SAXReader时报 java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext原因:缺少jar包使用SAXReader需要两个jar包dom4j-1.6.1.jarjaxen-1.1-beta-6.jar ..._java.lang.noclassdeffounderror: org/jaxen/namespacecontext
文章浏览阅读738次。jTopo如何实现不可拖拽我们在node节点进行拖拽的时候进行监听,使用的是mousedrag事件,然后设置所拖动节点的dragable为falsethis.scene.mousedrag(function(e)){ e.target.dragable = false;//将拖拽设置为false e.target.visible = false;//将节点设置为不可见}如果不懂 this.scene 结构的可以参考我的另一篇简单入门的topo文章https://blog.csdn.net/we_jtopo禁止拖动
文章浏览阅读5.7k次,点赞2次,收藏25次。1.确定主题选择主题应该是小而精,目标定位要小,内容要精。不要去试图制作一个包罗万象的站点,这往往会失去网站的特色,也会带来高强度的劳动,给网站的及时更新带来困难。一定记住,在互联网只有第一,没有第二。2.选择域名在互联网世界中,域名就是网站的名字。一个好记,易记得域名会给个人网站加分,当积累了一定的用户的人气的个人网站,域名的价值就会体现出来。3.学习网页设计和开发技术对于常..._个人网站设计方案,网站逻辑结构设计,目录结构设计
文章浏览阅读345次。React 学习笔记一、FlexBoxFlexBox(弹性盒子布局),它是为了简单快速地完成各种伸缩性的设计而提出来的。它可以为传统的盒子模型布局带来更大的灵活性。目前主流的浏览器都已经支持它了。1、布局模型flexbox布局由伸缩容器和伸缩项目组成。任何一个元素都可以指定为flexbox布局,只要设置display的属性为flex或inline-flex即可。伸缩容器的子元素就成为伸缩项目,伸缩项_默认情况下伸缩容器中只有一个行并且与什么方向一致