csu 2014 summer trainning day 1 哈希
2014-07-18 09:32
239 查看
题意:给定串s,串中不同字符数nc,所求子串长度n,求长度为n的不同的子串的个数
分析:处理长度很短的字符串哈希,数据保证可以无冲突存储下来,利用hash思想快速查询以前便利的结果,关键在于优化搜索。
code:
#include<iostream> #include<queue> #include<string.h> #include<stdio.h> #include<algorithm> #include<vector> #defineMod49999 usingnamespacestd; structNode{ intadd,a1,a2; }; vector<Node>G[Mod+100]; voidinit(){ for(inti=0;i<Mod+10;i++)G[i].clear(); } voidInsert(intk,intb1,intb2){ intkey=k; while(key<0)key=key+Mod; key=key%Mod; inti; for(i=0;i<G[key].size();i++){ intadd=G[key][i].add; inta1=G[key][i].a1; inta2=G[key][i].a2; if(add==k&&(a1+a2==b1+b2)&&(a1-a2==b1-b2))break; } if(i==G[key].size())G[key].push_back(Node{k,b1,b2}); return; } boolSearch(intd,intc){ intkey=d-c; while(key<0)key=key+Mod; key=key%Mod; inti; for(i=0;i<G[key].size();i++){ intadd=G[key][i].add; inta1=G[key][i].a1; inta2=G[key][i].a2; if(add==d-c&&a1!=d&&a2!=d&&a1!=c&&a2!=c)returntrue; } returnfalse; } inta[1010]; intn; intmain(){ while(~scanf("%d",&n)&&n){ init(); for(inti=0;i<n;i++)scanf("%d",&a[i]); for(inti=0;i<n-1;i++){ for(intj=i+1;j<n;j++){ Insert(a[i]+a[j],a[i],a[j]); } } intm=-536870913; for(inti=0;i<n-1;i++){ for(intj=i+1;j<n;j++){ if(Search(a[i],a[j]))m=max(m,a[i]); if(Search(a[j],a[i]))m=max(m,a[j]); } } if(m==-536870913)puts("nosolution"); elseprintf("%d\n",m); } return0; }
ViewCode
列出一些Hash要用到的素数:
prime=997,prime=1999,prime=7993,prime=9973,prime=29989,prime=49999,prime=99991
相关文章推荐
- csu 2014 summer training day 4 树形dp升阶
- csu 2014 summer training day 2 莫比乌斯反演
- 【April Fools Day Contest 2014C】【愚人节脑洞】Magnum Opus 炼金术配方
- April Fools Day Contest 2014 逗比的专场
- MVP ComCamp & GCR MVP Openday 2014
- 【计算几何】【极角排序】【二分】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem J. Triangles
- 【博弈论】【SG函数】【线段树】Petrozavodsk Summer Training Camp 2016 Day 9: AtCoder Japanese Problems Selection, Thursday, September 1, 2016 Problem H. Cups and Beans
- NOIP 2014 解方程 [模运算][哈希?]
- 【April Fools Day Contest 2014D】【愚人节脑洞 人工搜索】Big Data 比较正确的信息数
- BZOJ3507 [Cqoi2014]通配符匹配 【哈希 + 贪心】
- 【线段树】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem H. Hay
- Summer-ACM-Trainning 第0周-热身中。。。
- 【CSWS2014 Summer School】深度问答技术及其在搜索中的应用-马艳军
- 【April Fools Day Contest 2014E】【简单计算几何】Dome 四棱锥内切圆半径为r
- April Fools Day Contest 2014 H. A + B Strikes Back
- 使用ActiveReport for .net 进行报表开发(一)(转自Cure The Last Day Of Summer)
- 2014 MVP Open Day 见闻(上)
- codeforces April Fools Day Contest 2014 A. The Great Game
- Gym - 100384 Winter Programming School 2014, Kharkov The 23-d of the Fabruary 2014. (day 9), junior
- 2015 HUAS Summer Trainning #4~C