题意:

给出一个字符串,让你往后添加最少的字符,使其成为回文串。

分析:

题目就相当于求后缀字符串为回文串的最长长度,判断回文串要O(n)时间,直接判断肯定不行。我们从后往前枚举,每次字符串与上一个字符串仅相差一个字符,所以我们将字符hash,每次的hash值就与上一个hash有关。于是我们判断后缀字符串的从左往右的hash值是否与从右往左的hash值相等即可。

#include <bits/stdc++.h>
using namespace std; typedef long long ll;
const int maxn=100000+5;
const ll mod=1000000007;
char str[maxn]; int main()
{
// freopen("in.txt","r",stdin);
while(~scanf("%s",str))
{
int len=strlen(str);
int base1=131,base2=1313;
ll pre1,pre2,suf1,suf2;
ll tmp1=1,tmp2=1;
pre1=pre2=suf1=suf2=0;
int ans;
for(int i=len-1;i>=0;i--)
{
pre1=(base1*pre1+str[i])%mod; //进行两次hash
pre2=(base2*pre2+str[i])%mod;
suf1=(str[i]*tmp1+suf1)%mod;
suf2=(str[i]*tmp2+suf2)%mod;
tmp1=base1*tmp1%mod;
tmp2=base2*tmp2%mod;
if(pre1==suf1 && pre2==suf2) ans=i;
}
printf("%s",str);
for(int i=ans-1;i>=0;i--)
putchar(str[i]);
puts("");
}
return 0;
}

UVA 11475 Extend to Palindrome hash的更多相关文章

  1. uva 11475 - Extend to Palindrome(KMP)

    option=com_onlinejudge&Itemid=8&category=506&page=show_problem&problem=2470" ta ...

  2. UVA 11475 Extend to Palindrome(hash)题解

    题意:问你最少加几个字母使所给串变成回文串. 思路:一开始打算将正序和逆序都hash,然后用提取前缀后缀的方法来找,但是RE了,debug失败遂弃之.后来发现可以直接hash,一边hash一边比较.我 ...

  3. UVA - 11475 Extend to Palindrome (后缀数组)

    Your task is, given an integer N, to make a palidrome (word that reads the same when you reverse it) ...

  4. UVA 11475 Extend to Palindrome(后缀数组+ST表)

    [题目链接] http://acm.hust.edu.cn/vjudge/problem/27647 [题目大意] 给出一个字符串,要求在其后面添加最少的字符数,使得其成为一个回文串.并输出这个回文串 ...

  5. UVA - 11475 Extend to Palindrome —— 字符串哈希 or KMP or 后缀数组

    题目链接:https://vjudge.net/problem/UVA-11475 题意: 给出一个字符串,问在该字符串后面至少添加几个字符,使得其成为回文串,并输出该回文串. 题解: 实际上是求该字 ...

  6. UVa 11475 - Extend to Palindrome

    題目:給你一個字符串,在後面拼接一部分使得它變成回文串,使得串最短.輸出這個回文串. 分析:KMP,dp.這裡利用KMP算法將串和它的轉置匹配,看結束時匹配的長度就可以. 因為串比较長.使用KMP比较 ...

  7. UVA 11475 Extend to Palindrome (kmp || manacher || 后缀数组)

    题目链接:点击打开链接 题意:给你一个串,让你在串后面添加尽可能少的字符使得这个串变成回文串. 思路:这题可以kmp,manacher,后缀数组三种方法都可以做,kmp和manacher效率较高,时间 ...

  8. 区间DP UVA 10739 String to Palindrome

    题目传送门 /* 题意:三种操作,插入,删除,替换,问最少操作数使得字符串变成回文串 区间DP:有一道类似的题,有点不同的是可以替换,那么两端点不同的时候可以替换掉一个后成回文, 即dp[j+1][k ...

  9. Extend to Palindrome UVA - 11475(补成回文串)

    题意: 就是用最少的字符把原字符串补成回文串 解析: emm/.../网上都是用kmp和后缀数组做的 我没想到这俩的思路...emmm... 想到了exkmp的  就是原串和逆串匹配一下  注意要保证 ...

随机推荐

  1. RHCE脚本题目详解

    目录 RHCE脚本题目详解 题目一 shell脚本之if语句实现: shell脚本之case语句实现: 题目二 实现 测试 解析 写在后面 RHCE脚本题目详解 题目一 在system1上创建一个名为 ...

  2. Ansible_使用jinja2模板部署自定义文件

    一.jinja2简介 1.jinja2模板 1️⃣:Ansible将jinja2模板系统用于模板文件,Ansible还使用jinja2语法来引用playbook中的变量 2️⃣:变量和逻辑表达式置于标 ...

  3. 关于typedef的用法总结-(转自Bigcoder)

    不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些 ...

  4. Spring AOP 用法浅谈(Day_18)

    当你这一天没有在进步,那你就是在退步! [简述] Aspect Oriented Programming :面向切面编程 所谓面向切面编程,是一种通过预编译和运行期动态代理的方式实现在不修改源代码的情 ...

  5. MongoDB(13)- 查询操作返回指定的字段

    插入测试数据 db.inventory.insertMany( [ { item: "journal", status: "A", size: { h: 14, ...

  6. Bringing up interface eth0: Error: No suitable device found: no device found for connection 'System eth0'.

    在VMware的虚拟机中克隆CentOS,在重启网卡的时候报错:   Shutting down loopback interface: [ OK ] Bringing up loopback int ...

  7. ALD技术,相机去噪,图像传感器

    ALD技术,相机去噪,图像传感器 1. 作为镜片的防反射涂层技术被关注的ALD(atomic layer deposition)的引入趋势. (a)为什么需要一种新的防止反射的涂层技术? ALD被认为 ...

  8. ResNet-50模型图像分类示例

    ResNet-50模型图像分类示例 概述 计算机视觉是当前深度学习研究最广泛.落地最成熟的技术领域,在手机拍照.智能安防.自动驾驶等场景有广泛应用.从2012年AlexNet在ImageNet比赛夺冠 ...

  9. Paddle概述

    Paddle概述 本文结合深度学习理论与实践,使用百度飞桨平台实现自然语言处理.计算机视觉及个性化推荐等领域的经典应用. 实践部分使用飞桨深度学习开源框架,适配最新的2.0版本,默认使用动态图编程范式 ...

  10. TensorRT-安装-使用

    TensorRT-安装-使用 一.安装 这里 是英伟达提供的安装指导,如果有仔细认真看官方指导,基本上按照官方的指导肯定能安装成功. 问题是肯定有很多人不愿意认真看英文指导,比如说我就是,我看那个指导 ...