模板,但是对这个算法还是不太清楚,真实不明觉厉....

 #include <iostream>
#include <cstdio>
#include <string.h>
#pragma warning ( disable : 4996 )
using namespace std; inline int Max(int a,int b) { return a>b?a:b; }
inline int Min(int a,int b) { return a>b?b:a; }
const int inf = 0x3f3f3f3f;
const int maxn = 1e5+1e4+; char str[maxn];
char nstr[maxn<<];
int maxlen[maxn<<];
int len, plen, ans; void init()
{
memset( nstr, , sizeof(nstr) );
memset( maxlen, , sizeof(maxlen) );
len = strlen(str);
nstr[] = '$'; nstr[] = '#'; int j = ;
for ( int i = ; i < len; i++ )
{
nstr[j++] = str[i];
nstr[j++] = '#';
}
nstr[j] = '\0';
plen = j;
} void solve()
{
ans = -;
int id, mx = ; for ( int i = ; i < plen; i++ )
{
if( i < mx )
maxlen[i] = Min( maxlen[*id-i], mx-i );
else
maxlen[i] = ; while( nstr[i-maxlen[i]] == nstr[i+maxlen[i]] )
maxlen[i]++; if ( mx < i + maxlen[i] )
{
id = i;
mx = i + maxlen[i];
}
ans = Max(ans, maxlen[i]-);
}
} int main()
{
while ( ~scanf("%s", str) )
{
init();
solve();
printf( "%d\n", ans );
}
return ;
}

又做了一道几乎模板的题(吉哥系列故事——完美队形II),终于对马拉车有点理解了,这算法实在太巧妙了!

和模板几乎一样,只不过增多了个左半边要升序排列罢了

 #include <iostream>
#include <cstdio>
#include <string.h>
#pragma warning ( disable : 4996 )
using namespace std; inline int Max(int a,int b) { return a>b?a:b; }
inline int Min(int a,int b) { return a>b?b:a; }
const int inf = 0x3f3f3f3f;
const int maxn = 1e5+; int maxl[maxn<<];
int str[maxn], nstr[maxn<<];
int N, ans, plen; void init()
{
memset( maxl, , sizeof(maxl) );
memset( nstr, , sizeof(nstr) );
nstr[] = ; nstr[] = -; int j = ;
for( int i = ; i < N; i++ )
{ nstr[j++] = str[i]; nstr[j++] = -; }
nstr[j] = -;
plen = j;
} void solve()
{
ans = -;
int id, mx = ;
for ( int i = ; i < plen; i++ )
{
if(i < mx)
maxl[i] = Min(maxl[*id-i], mx-i);
else
maxl[i] = ; while( nstr[i-maxl[i]]==nstr[i+maxl[i]] && nstr[i-maxl[i]]<=nstr[i-maxl[i]+] )
maxl[i]++;
if(mx < i + maxl[i])
{ id = i; mx = i + maxl[i]; } ans = Max(ans, maxl[i]-);
}
} int main()
{
int all; cin >> all;
while (all--)
{
cin >> N;
for( int i = ; i < N; i++ )
scanf( "%d", &str[i] );
init();
solve(); printf( "%d\n", ans );
}
return ;
}

HDU 3086 马拉车模板的更多相关文章

  1. hdu 3068 最长回文子串 马拉车模板

    前几天用后缀数组写过一次这题,毫无疑问很感人的TLE了-_-|| 今天偶然发现了马拉车模板,O(N)时间就搞定 reference:http://acm.uestc.edu.cn/bbs/read.p ...

  2. hdu 1686 KMP模板

    // hdu 1686 KMP模板 // 没啥好说的,KMP裸题,这里是MP模板 #include <cstdio> #include <iostream> #include ...

  3. HDU 2138 Miller-Rabin 模板题

    求素数个数. /** @Date : 2017-09-18 23:05:15 * @FileName: HDU 2138 miller-rabin 模板.cpp * @Platform: Window ...

  4. hdu 1348 凸包模板

    http://acm.hdu.edu.cn/showproblem.php?pid=1348 造城墙问题,求出凸包加上一圈圆的周长即可 凸包模板题 #include <cstdio> #i ...

  5. hdu3068 最长回文 马拉车模板题

    题目传送门 马拉车算法模板题. 学习博客 #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) using name ...

  6. HDU 1392 凸包模板题,求凸包周长

    1.HDU 1392 Surround the Trees 2.题意:就是求凸包周长 3.总结:第一次做计算几何,没办法,还是看了大牛的博客 #include<iostream> #inc ...

  7. HDU 2586 (LCA模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2586 题目大意:在一个无向树上,求一条链权和. 解题思路: 0 | 1 /   \ 2      3 ...

  8. HDU 2082 母函数模板题

    找单词 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status De ...

  9. HDU 2255 & KM模板

    题意: 一张完备二分图求最优完备匹配. SOL: 这题就不讲什么sol了...毕竟是裸的KM,不会的话可以看老人家的大白鼠,一些问题看代码注释.讲讲经历(悲惨的经历) 刚打完,自信地交上去发现MLE. ...

随机推荐

  1. POJ - 2406 ~SPOJ - REPEATS~POJ - 3693 后缀数组求解重复字串问题

    POJ - 2406 题意: 给出一个字符串,要把它写成(x)n的形式,问n的最大值. 这题是求整个串的重复次数,不是重复最多次数的字串 这题很容易想到用KMP求最小循环节就没了,但是后缀数组也能写 ...

  2. 数据类中引用virtual

    public class City { [Key] public int CityID { set; get; } [Display(Name = "城市名称")] [Requir ...

  3. 03-css选择器

    <!doctype html><!--声明文档类型 网页文档--> <html><!--根目录标签 父级--> <head><!--网 ...

  4. java命令行编译执行

  5. (转)Nginx+Php-fpm运行原理详解

    一.代理与反向代理 现实生活中的例子 1.正向代理:访问google.com 如上图,因为google被墙,我们需要vpn翻墙才能访问google.com. vpn对于“我们”来说,是可以感知到的(我 ...

  6. Leetcode93. Restore IP Addresses复原IP地址

    给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135", ...

  7. Error:(27, 13) Failed to resolve: com.android.support.constraint:constraint-layout:1.0.2约束布局constraint-layout导入失败的解决方案

    运行demo提示错误: Error:(27, 13) Failed to resolve: com.android.support.constraint:constraint-layout:1.0.2 ...

  8. 解决无法wifi上网的问题

    1.查看网卡型号 lspci | grep Network 可以看到我的是Wireless-AC 9560 2.登录Inter官网下载网卡驱动 https://www.intel.com/conten ...

  9. pb_ds(平板电视)简介

    据说NOI赛制可以用pbds,故整理常用方法: 1.splay 所需声明及头文件: #include <ext/pb_ds/tree_policy.hpp> #include <ex ...

  10. 一台电脑同时添加git和bitbucket两个网站的ssh key

    添加第一个ssh key 就不多说了,不懂的可以自己查资料 ssh-keygen -t rsa -C 'email_1@email.com' 然后一路enter就好了 假设已经添加好了git的ssh ...