[BZOJ3916/WOJ3815]Friends】的更多相关文章

题目链接: 传送门 题目: Description 有三个好朋友喜欢在一起玩游戏,A君写下一个字符串S,B君将其复制一遍得到T,C君在T的任意位置(包括首尾)插入一个字符得到U.现在你得到了U,请你找出S. Input 第一行一个数N,表示U的长度. 第二行一个字符串U,保证U由大写字母组成 Output 输出一行,若S不存在,输出"NOT POSSIBLE".若S不唯一,输出"NOT UNIQUE".否则输出S. 题目分析: 枚举断点+字符串前缀和哈希 如果一个字…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3916 复习一下hash(然后被傻叉错误卡了半天TAT... 取出一个字串:h[r]-h[l-1]*power[r-l+1]  然后匹配... 注意一下当前需要的是s[i]还是s[i-1],做hash数组时不要写s[i]-'A',写s[i],否则容易被卡 对于这道题,枚举一下断点,注意判重. 对于这种有断点的前面一段+后面一段等于完整一段,要注意前面那一段乘的权. #include<cstri…
题面戳我 Solution 首先长度为偶数可以直接判掉 然后我们可以枚举删的位置,通过预处理的\(hash\),判断剩余部分是否划分成两个一样的 判重要注意,我们把字符串分为三个部分\(L_l+1+L_r\),(\(L_l=L_r\)),如果上次答案和这次都出现在\(L_l\),则一定不会是不同的,因为右边的\(L_r\)是一样的,所以复制的串一定是一样的,全在\(L_r\)同理 那么我们就只用判断上次出现的答案在\(L_l+1\)上,这次出现在\(L_r\)上,其实我们就可以发现复制的串变成了…
枚举断点,哈希判断. #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; sc…
题目描述 有三个好朋友喜欢在一起玩游戏,A君写下一个字符串S,B君将其复制一遍得到T,C君在T的任意位置(包括首尾)插入一个字符得到U.现在你得到了U,请你找出S. 输入 第一行一个数N,表示U的长度. 第二行一个字符串U,保证U由大写字母组成 输出 输出一行,若S不存在,输出"NOT POSSIBLE".若S不唯一,输出"NOT UNIQUE".否则输出S. 样例输入 Sample Input1: 7 ABXCABC Sample Input2: 6 ABCDEF…
字符串\(Hash\). 笔者实在太菜了,到现在还没有熟练掌握\(Hash\),就来这里写一篇学习笔记. \(Description\) 有三个好朋友喜欢在一起玩游戏,\(A\)君写下一个字符串\(S,B\)君将其复制一遍得到\(T,C\)君在T的任意位置(包括首尾)插入一个字符得到\(U\).现在你得到了\(U\),请你找出\(S.\) \(Input\) 第一行一个数\(N\),表示\(U\)的长度. 第二行一个字符串\(U\),保证\(U\)由大写字母组成 \(Output\) 输出一行,…
9/30 BZOJ3038:线段树,不带lazy标记,直接修改叶子. BZOJ3211:同3038 BZOJ1406:将式子转换成[(x-1)*(x+1)%n==0]然后枚举i.当i=x-1时,i*(i+2)%n==0;当i=x+1时,i*(i-2)%n==0;i是n的因数 BZOJ3916:字符串hash.分类讨论字符的位置. BZOJ1589:缩点后是个DAG,然后DAG上dp BZOJ1072:状压dp,或者暴力.都需要去重.不过暴力可以不用组合数学. BZOJ1419:期望dp,设dp[…
[来源]:bzoj3916 [参考博客] BZOJ3916: [Baltic2014]friends [ 哈希和哈希表]Three Friends [Baltic2014][BZOJ3916]friends [题解] 首先hash整个串,然后分成三种情况,分别是前半段,中间,后半段,三段的字母试图去掉看能否拼起来. 如果可以,那么还需要考虑是否为唯一的. 唯一的意思是: 串S,如果有选择两个不同的串S也能构成这个原串. 代码还是参考别人写的. #include<cstdio> #include…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3916 (BZOJ3916) 由题意可知 \(N\) 得为奇数,\(S\) 才存在,所以先特判 \(N\) 为偶数的情况. 由题意可知 \(S\) 的长度为 \(\lfloor \dfrac {N}{2}\rfloor\), 设 \(S\) 的长度为 \(M\). 如果存在 \(S\),则 \(S\) 一定是 \(U\) 的前 \(M\) 个字符或后 \(M\) 个字符. 用 substr…