【题解】

  暴力枚举添加字符的位置,然后判断去掉这个位置的字符串是否有由两个相同的串拼接而成。本题的n的范围为200W,暴力判断会TLE,所以要使用哈希。

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
#define LL long long
#define N 2000010
#define rg register
#define base (107)
using namespace std;
int n,pos,cnt,mid,val;
LL h[N],pow[N];
char s[N],s1[N],s2[N];
map<int,int>u;
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
inline LL geth(int l,int r){
if(r<l) return ;
return h[r]-h[l-]*pow[r-l+];
}
inline bool check(int x){
int l1=x-,l2=n-x; LL tmp=,tmp2=;
if(x==mid){
tmp=geth(,mid-); tmp2=geth(mid+,n);
}
else{
if(x<mid) tmp=geth(,x-)*pow[mid-x]+geth(x+,mid),tmp2=geth(mid+,n);
else tmp=geth(,mid-),tmp2=geth(mid,x-)*pow[n-x]+geth(x+,n);
}
// printf("%d %lld %lld\n",x,tmp,tmp2);
val=tmp;
return tmp==tmp2;
}
int main(){
n=read(); mid=n/+;
if(!(n&)){puts("NOT POSSIBLE"); return ;}
scanf("%s",s+);
pow[]=;
for(rg int i=;i<=n;i++) h[i]=h[i-]*base+(int)s[i],pow[i]=pow[i-]*base;
// for(rg int i=1;i<=n;i++) printf("%d ",h[i]); puts("");
for(rg int i=;i<=n;i++){
if(check(i)){
if(!u[val]) u[val]=,cnt++,pos=i;
}
if(cnt>) break;
}
if(!cnt) puts("NOT POSSIBLE");
else{
if(cnt>) puts("NOT UNIQUE");
else{
int t=,pointer=;
while(t<=n/){
if(pointer==pos) pointer++;
else printf("%c",s[pointer++]),t++;
}
puts("");
}
}
return ;
}

BZOJ 3916 [Baltic2014]friends的更多相关文章

  1. BZOJ 3916: [Baltic2014]friends( hash )

    字符串哈希..然后枚举每一位+各种判断就行了 ----------------------------------------------------------------------------- ...

  2. 【BZOJ】3916: [Baltic2014]friends

    http://www.lydsy.com/JudgeOnline/problem.php?id=3916 #include <bits/stdc++.h> using namespace ...

  3. bzoj 3916 暴力哈希

    暴力的哈希,注意: 将一个串当作另一个串的前缀,需要乘上p[len],len=后面串的长度 这是自己的代码,拿数据在本地测A掉了,但是bz上wa了??bz换数据了难道?? #include<cs ...

  4. bzoj 3916: friends 瞎搞

    题目: 有三个好朋友喜欢在一起玩游戏,A君写下一个字符串S,B君将其复制一遍得到T,C君在T的任意位置(包括首尾)插入一个字符得到U.现在你得到了U,请你找出S. 题解: 发现字符串的长度一定为奇数. ...

  5. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  6. BZOJ刷题指南(转)

    基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...

  7. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  8. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  9. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

随机推荐

  1. python调用java程序--jpype

    官方网站:http://jpype.sourceforge.net/ 官方使用文档:http://jpype.sourceforge.net/doc/user-guide/userguide.html ...

  2. 数据仓库 VS 数据库

    数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Varian ...

  3. iOS核心动画以及UIView动画的介绍

    我们看到很多App带有绚丽狂拽的特效,别出心裁的控件设计,很大程度上提高了用户体验,在增加了实用性的同时,也赋予了app无限的生命力.这些华丽的效果很多都是基于iOS的核心动画原理实现的,本文介绍一些 ...

  4. 29. ExtJs - Struts2 整合(1) - 登录页面

    转自:https://yarafa.iteye.com/blog/729197 初学 ExtJS,在此记录下学习过程中的点点滴滴,以备不时只需,也希望能给跟我一样的菜鸟一些帮助,老鸟请忽略.如有不当之 ...

  5. bzoj 1642: [Usaco2007 Nov]Milking Time 挤奶时间【dp】

    这不就是个n方dp吗--看了眼洛谷题解简直神仙打架 我全程没用到n-- 把休息时间并入产奶时间,注意"结束时间不挤奶",所以ei=ei+r-1,注意这个-1! 然后按r排序,设f[ ...

  6. 239 Sliding Window Maximum 滑动窗口最大值

    给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口 k 内的数字.滑动窗口每次只向右移动一位.例如,给定 nums = [1,3,-1,-3, ...

  7. 258 Add Digits 各位相加

    给一个非负整数 num,反复添加所有的数字,直到结果只有一个数字.例如:设定 num = 38,过程就像: 3 + 8 = 11, 1 + 1 = 2. 由于 2 只有1个数字,所以返回它.进阶:你可 ...

  8. [ Luogu 3927 ] Factorial

    \(\\\) \(Description\) 求 \(N!\) 在 \(K\) 进制表示下末尾 \(0\) 的个数. \(N,K\in [1,10^{12}]\) \(\\\) \(Solution\ ...

  9. php域名授权只需要一个函数

    <?php function allow_doamin(){ $is_allow=false; $url=trim($_SERVER['SERVER_NAME']); $arr_allow_do ...

  10. PMBOK项目管理九大知识领域和五大流程 --美国IT项目管理硕士笔记(二)

    PMBOK 项目管理 九大知识领域和五大流程 PMI   Project Management Institute.PMI 是世界上最大的非盈利机构,是项目管理领域的领导者.PMI制定项目管理行业标准 ...