【字符串哈希】bzoj3916 [Baltic2014]friends
枚举断点,哈希判断。
#include<cstdio>
using namespace std;
typedef unsigned long long ull;
ull hs,hs1,hs2,seeds[1000010],hsgoal;
int n;
int del=-1;
char s[2000002],s2[2000002];
int main()
{
seeds[0]=1;
for(int i=1;i<=1000009;++i) seeds[i]=seeds[i-1]*31;
scanf("%d%s",&n,s);
if(!(n&1)) {puts("NOT POSSIBLE"); return 0;}
for(int i=(n>>1)+1;i<n;++i)
hs=hs*31+(s[i]-64);
for(int i=1;i<=(n>>1);++i)
hs2=hs2*31+(s[i]-64);
if(hs2==hs)
{
del=0;
hsgoal=hs;
}
for(int i=1;i<=(n>>1);++i)
{
hs2-=((s[i]-64)*seeds[(n>>1)-i]);
hs1=hs1*31+(s[i-1]-64);
if(hs1*seeds[(n>>1)-i]+hs2==hs)
{
if(del!=-1&&hsgoal!=hs)
{
puts("NOT UNIQUE");
return 0;
}
else
{
del=i;
hsgoal=hs;
}
}
}
hs=hs1=hs2=0;
for(int i=0;i<(n>>1);++i)
hs=hs*31+(s[i]-64);
for(int i=(n>>1)+1;i<n;++i)
hs2=hs2*31+(s[i]-64);
for(int i=(n>>1)+1;i<n;++i)
{
hs2-=((s[i]-64)*seeds[n-1-i]);
hs1=hs1*31+(s[i-1]-64);
if(hs1*seeds[n-1-i]+hs2==hs)
{
if(del!=-1&&hsgoal!=hs)
{
puts("NOT UNIQUE");
return 0;
}
else
{
del=i;
hsgoal=hs;
}
}
}
if(del==-1)
puts("NOT POSSIBLE");
else if(del<=(n>>1))
{
for(int i=0;i<=(n>>1);++i)
if(i!=del)
putchar(s[i]);
puts("");
}
else
{
for(int i=(n>>1);i<n;++i)
if(i!=del)
putchar(s[i]);
puts("");
}
return 0;
}
【字符串哈希】bzoj3916 [Baltic2014]friends的更多相关文章
- HDU 1880 魔咒词典(字符串哈希)
题目链接 Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一 ...
- 洛谷P3370 【模板】字符串哈希
P3370 [模板]字符串哈希 143通过 483提交 题目提供者HansBug 标签 难度普及- 提交 讨论 题解 最新讨论 看不出来,这题哪里是哈希了- 题目描述 如题,给定N个字符串(第i个 ...
- HDU2594 Simpsons’ Hidden Talents 字符串哈希
最近在学习字符串的知识,在字符串上我跟大一的时候是没什么区别的,所以恶补了很多基础的算法,今天补了一下字符串哈希,看的是大一新生的课件学的,以前觉得字符串哈希无非就是跟普通的哈希没什么区别,倒也没觉得 ...
- LA 6047 Perfect Matching 字符串哈希
一开始我用的Trie+计数,但是不是计多了就是计少了,后来暴力暴过去的…… 看了别人的代码知道是字符串哈希,但是仍有几个地方不理解: 1.26^500溢出问题 2.没考虑哈希碰撞? 跪求指点! #in ...
- AC日记——【模板】字符串哈希 洛谷 3370
题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转 ...
- 从Hash Killer I、II、III论字符串哈希
首先,Hash Killer I.II.III是BZOJ上面三道很经典的字符串哈希破解题.当时关于II,本人还琢磨了好久,但一直不明白为啥别人AC的代码都才0.3kb左右,直到CYG神犇说可以直接随机 ...
- 【NOIP模拟】Grid(字符串哈希)
题目背景 SOURCE:NOIP2016-RZZ-1 T3 题目描述 有一个 2×N 的矩阵,矩阵的每个位置上都是一个英文小写字符. 现在需要从某一个位置开始,每次可以移动到一个没有到过的相邻位置,即 ...
- 洛谷 P3370 【模板】字符串哈希
洛谷 P3370 [模板]字符串哈希 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的 ...
- cf_514C(字符串哈希)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121897#problem/G Watto and Mechanism Time ...
- 洛谷 P3370 字符串哈希 (模板)
<题目链接> <转载于 >>> > 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共 ...
随机推荐
- ACM模板~求第k短路 ~~~A*+Dijkstra
#include <map> #include <set> #include <cmath> #include <ctime> #include < ...
- ext4文件系统由文件的inode号定位其inode Table
在ubuntu中(以16.06为例),stat filename 可以查看文件的inode数值,但是如何确定该inode项具体在哪个块组下的inode Table中不是那么容易,接下来通过一步步计算来 ...
- mysql5.7.11安装遇到的问题
首次安装mysql5.7.11绿色版,真是破费功夫,现记录安装中遇到的问题,只是解决了问题,而不清楚问题的由来. 问题一: 问题二: 问题三: 问题四: 我的my.ini配置文件: [mysql] # ...
- 【BZOJ2286】【SDOI2011】消耗战 [虚树][树形DP]
消耗战 Time Limit: 20 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 在一场战争中,战场由n个岛屿和n-1 ...
- Codeforces 940F Machine Learning 带修改莫队
题目链接 题意 给定一个长度为\(n\)的数组\(a\),\(q\)个操作,操作分两种: 对于区间\([l,r]\),询问\(Mex\{c_0,c_1,c_2,⋯,c_{10^9}\}\),其中\(c ...
- Pycharm2017汉化包下载链接
https://github.com/ewen0930/PyCharm-Chinese/tree/f5a8dc4a8f34398e81a69c69bb046aa4eff27c90 1.首先下载PyCh ...
- Perl的Expect模块学习
Perl的Expect模块学习 http://www.xuebuyuan.com/1852717.html
- 【bzoj4094】【洛谷3097】Optimal Milking
假的,假的,都是假的. 题意是最大点独立集还要算贡献,写个网络流岂不是GG? 其实这个也就是奇偶不能选而已……所以无外乎这么四种情况: 左开右闭 左闭右开 都闭 都开 线段树按照套路维护一下就好了. ...
- Linux管道符、重定向与环境变量
——<Linux就该这么学>笔记 输入输出重定向输入重定向 指把文件导入到命令中输出重定向 指把原本要输出到屏幕的数据信息写入到指定文件中 输出重定向 分为标准输出重定向和错误输出重定向 ...
- [ Mongodb ] 问题总汇
1. Mongodb备份 [root@localhost ~]# mongodump -h /users 2. Mongodb恢复 [root@localhost ~]# mongorestore - ...