POJ 2785 HASH】的更多相关文章

题目链接:http://poj.org/problem?id=2785 题意:给定n行数字,每行4个数分别是a,b,c,d,现在要求能有多少个(a,b,c,d)组合并且和为0 思路:n^2统计所有(a+b),然后n^2统计(-1*(c+d)),再从(a+b)中找即可.注意map会超时.所以可以用Hash表或者排序+二分 #include<iostream> #include<algorithm> #include<cstring> #include<string&…
http://poj.org/problem?id=2785 题目大意: 给你四个数组a,b,c,d求满足a+b+c+d=0的个数 其中a,b,c,d可能高达2^28 思路: 嗯,没错,和上次的 HDU 1496 Equations hash(见http://blog.csdn.net/murmured/article/details/17596655)差不多,但是那题数据量小,hash值很好得到,不用取模运算. 而这题数据量很大.那就采用开散列的思想. hash值怎么选取? 上次我看的书中是建…
[题目链接] http://poj.org/problem?id=2785 [题目大意] 给出四个数组,从每个数组中选出一个数,使得四个数相加为0,求方案数 [题解] 将a+b存入哈希表,反查-c-d [代码] #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int N=4500,mod=1<<22; int n,a[N],b[N],c[…
题目链接:http://poj.org/problem?id=3274 题意+思路: 点击这里 补充:因为有减法运算,所以可能会造成运算后结果为负数,所以需要把结果统一转换成正数[不然数组下标访问不到负数位置],还有要先把0放入哈希表,不然会出现长度为1但是没有匹配的情况 比如:1 3   7 结果为1,如果没把0放进哈希表则结果为0 #include<iostream> #include<algorithm> #include<cstring> #include<…
题目链接:http://poj.org/problem?id=3349 题意:你可能听说话世界上没有两片相同的雪花,我们定义一个雪花有6个瓣,如果存在有2个雪花相同[雪花是环形的,所以相同可以是旋转过后相同]则输出“Twin snowflakes found.”,否则输出“No two snowflakes are alike.”. 思路:最简单的就是两两判断,但是这样的复杂度为O(n^2),TLE.所以我们要尽量减少判断次数,我们用把拥有6个瓣的雪花HASH成一个数字,只有两个雪花用有相同HA…
题目链接:http://poj.org/problem?id=1840 题意:公式a1x1^3+ a2x2^3+ a3x3^3+ a4x4^3+ a5x5^3=0,现在给定a1~a5,求有多少个(x1~x5)的组合使得公式成立.并且(x1~x5)取值再[-50,50]且不能为0 思路:因为x的值范围比较小,只有100.所以可以先求出 a1x1^3+a2x2^3+a3x3^3. 然后在求 (-1)*(a4x4^3+a5x5^3)从前面的所得的Hash表进行二分查找. #include<iostre…
题目地址:http://poj.org/problem?id=2785 #include<cstdio> #include<iostream> #include<string.h> #include<algorithm> #include<math.h> #include<stdbool.h> #include<time.h> #include<stdlib.h> #include<set> #in…
题目链接:http://poj.org/problem?id=2785 大意是输入一个n行四列的矩阵,每一列取一个数,就是四个数,求有多少种着四个数相加和为0的情况 首先脑海里想到的第一思维必然是一个个枚举,用四个for循环,那时间复杂度变成了On4,n的最大值是4000. 肯定会超时.那么,为了简化时间,首先我们可以开两个至少4000*4000的数组分别把第一列与第二列的和的情况 ,第三列与第四列的和的情况存起来.这样就只用考虑两个数组的情况. 然后把两个数组排序,一个数组从头部开始同时另一个…
4 Values whose Sum is 0 Time Limit: 15000MS   Memory Limit: 228000K Total Submissions: 13069   Accepted: 3669 Case Time Limit: 5000MS Description The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how…
题意:一个雪花有六个角  给出N个雪花 判断有没有相同的(可以随意旋转) 参考:https://blog.csdn.net/alongela/article/details/8245005 注意:参考的博客的写法有问题  不知道POJ为什么没有卡掉 例如 数据         1 1 1 1 1 1 1 如果用这个博客的写法 等于自己和自己比了 输出的是yes 只要稍微改一下  改成比完之后插入key就能解决了 疑问:  manx=1000000+10会T 改成1200000+10才能过不知道为…