哈希
文章平均质量分 77
yrleep
大学毕业不久,ios游戏自由开发者。
展开
-
poj 2236 并查集
#include #include#include#includeusing namespace std;const int maxn=1010;struct{ intx,y;}a[maxn];double d[maxn][maxn];int text[maxn]; double calc(int t,int s){ double q=a[t].x-a原创 2013-04-14 19:37:53 · 514 阅读 · 0 评论 -
poj 2785 4 Values…
题意: 给你4个集合a,b,c,d 从其中各选一个值,使其和等于0 一共有多少种选法。每个集合最多有4000个元素。这个题目和之前发的1840基本是一个思路如果裸枚举的话,是n^4。然后就考虑分成两边枚举,先枚举两个值的和,存在哈希表中,然后在枚举另外两个值的和,查哈希表中它的相反数。#include #include #include #in原创 2013-04-14 19:40:00 · 657 阅读 · 0 评论 -
poj 1118 Lining Up 哈希
题意简单明了给你n个二维坐标上的点。求出一条直线上最多有几个点。思路:很容易想到的是,枚举每两个点构成的直线,再判断别的点在不在上面。这样的时间复杂度很高,n^3 n=700,承受不了。 再深入点的想,可以先以一个点为中心,然后作出n-1条直线,再判断着n-1条直线是否共线。 判断n-1条直线是否共线的时候可以利用哈希的思想,先把横纵坐标的截距约分,斜率相原创 2013-04-14 19:39:46 · 539 阅读 · 0 评论 -
poj 3349 Snowflake&nbs…
判断两个雪花是否一样n=100000;对每个雪花做一次hash,hash值相同的建立一个链表。用的是数组模拟链表的方法。hash函数也用的很简单的办法,全部相加然后求模#include #include #include using namespace std;const int maxn=5111111;int next[maxn];int lon;struct{原创 2013-04-14 19:39:39 · 551 阅读 · 0 评论 -
poj 1577 Falling Leaves
一个非常简单的二叉树的题目,就是考察简单构树,输出树的知识。#include#include#includeusing namespace std;const int maxn=501;char a[maxn][maxn];struct{ int left,right; char data;}tr[10001];int sum;int insert(cha原创 2013-04-14 19:39:33 · 504 阅读 · 0 评论 -
poj 3274 Gold Balanced Lineup
题目的意思是有n只奶牛,k种特性,每个奶牛有一个数值,转换成二进制数第i位为0表示没有第i种特性为1表示有。求一个最大的范围,使得该范围内每种特性出现的次数都一样做法,先转换成二进制然后累加,d[k][i]表示1到k只奶牛有i特性的奶牛一共有多少只若d[i][k]-d[j][k]对于所有的k都相等,则表示i+1到j这一段的奶牛满足条件。但是现在枚举的复杂度在n*n,超时再思考下,可以做原创 2013-04-14 19:39:44 · 499 阅读 · 0 评论 -
poj 1840 Eqs 哈希
这个题目用到的是哈希这个数据结构不过觉得关键还是把方程转换成两部分,从而达到降低复杂度的目的。其实这个跟双向广搜的思想还是十分类似的。哈希值为和具体做法,枚举两个系数所能组合成的所有哈希值再枚举另外三个数的所有哈希值。哈希值相同的即为一个解#include#include#include#includeusing namespace std;const int maxn=2原创 2013-04-14 19:39:42 · 621 阅读 · 0 评论 -
poj 2255 Tree Recovery
给出二叉树的先根,中根遍历,求其后根遍历我的做法,先找跟,中根遍历的顺序表中第一个在先跟遍历出现的节点是跟,跟左边的节点构成左子树,右边右子树,然后递归此方法用于左右子树。建树完成后后跟输出即可。#include#include#includeusing namespace std;const int maxn=101;char a[maxn],b[maxn];int lo原创 2013-04-14 19:39:37 · 578 阅读 · 0 评论 -
poj 2418 Hardwood Species
为了练习下字典树找的题目,用的是数组模拟的链表。其实更简单的做法是用一次快排。#include#include#includeusing namespace std;const int maxn=111111;char a[101];double sum;struct{ char data; int w[100]; int count;}tr[maxn原创 2013-04-14 19:39:35 · 589 阅读 · 0 评论 -
poj 1182 并查集
第一次wa是因为负数的问题现在虽然ac了 不过还是有一点小问题赶着睡觉晚上再处理 #include #include#includeusing namespace std;const int maxn=50001;struct{ intfa,re;}f[maxn];int ans;int findre(int x){ if(f[x].fa!=x)原创 2013-04-14 19:37:55 · 487 阅读 · 0 评论 -
hdu 4426 Palindromic Substring 字符串hash
这个题目真的wa了两天,最后居然是求最长回文子串的地方边界条件没有处理好,真心跪了。#include #include #include #include #include using namespace std;const int maxn=4e5+9,maxm=11371111;;const long long mod=777777777;char a[maxn];i原创 2013-11-09 11:00:59 · 1207 阅读 · 0 评论