题意:求集合中最大的\(d\)使得\(a+b=d-c\)

学习一下哈希的姿势(原来所谓链地址法就是直接跑个图啊)

哈希真有趣,全靠xjb乱搞

就叫这套hash为xjb-fibonacci-lpy-hash algorithm吧!(什么鬼)

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<cstdlib>
  6. #include<cmath>
  7. #include<string>
  8. #include<vector>
  9. #include<stack>
  10. #include<queue>
  11. #include<set>
  12. #include<map>
  13. #define rep(i,j,k) for(register int i=j;i<=k;i++)
  14. #define rrep(i,j,k) for(register int i=j;i>=k;i--)
  15. #define erep(i,u) for(register int i=head[u];~i;i=nxt[i])
  16. #define iin(a) scanf("%d",&a)
  17. #define lin(a) scanf("%lld",&a)
  18. #define din(a) scanf("%lf",&a)
  19. #define s0(a) scanf("%s",a)
  20. #define s1(a) scanf("%s",a+1)
  21. #define print(a) printf("%lld",(ll)a)
  22. #define enter putchar('\n')
  23. #define blank putchar(' ')
  24. #define println(a) printf("%lld\n",(ll)a)
  25. #define IOS ios::sync_with_stdio(0)
  26. using namespace std;
  27. const int maxn = 1e6+1e5;
  28. const int oo = 0x3f3f3f3f;
  29. const double eps = 1e-7;
  30. typedef long long ll;
  31. int nxt[maxn],head[maxn],id1[maxn],id2[maxn],tot;
  32. int a[1003];
  33. const int xjb=(1<<2)+(1<<5)+(1<<7)+(1<<12)+(1<<19);
  34. const int xjbb=(1<<1)+(1<<3)+(1<<4)+(1<<6)+(1<<15)+(1<<17);
  35. inline int Hash(unsigned int x){
  36. return (((x&xjb)+(x|xjb))^xjbb)&((1<<20)-1);
  37. }
  38. void init(){
  39. memset(head,-1,sizeof head);
  40. tot=0;
  41. }
  42. void add(int i,int j){
  43. int val=Hash(a[i]+a[j]);
  44. id1[tot]=i;id2[tot]=j;
  45. nxt[tot]=head[val];
  46. head[val]=tot++;
  47. }
  48. bool get(int ii,int jj,int cha){
  49. int val=Hash(cha);
  50. for(int i=head[val];~i;i=nxt[i]){
  51. int x=id1[i],y=id2[i];
  52. if(cha==a[x]+a[y]&&x!=ii&&y!=jj&&x!=jj&&y!=ii) return 1;
  53. }
  54. return 0;
  55. }
  56. int main(){
  57. int n;
  58. while(cin>>n){
  59. if(n==0) break;
  60. init();
  61. rep(i,1,n) scanf("%d",&a[i]);
  62. rep(i,1,n) rep(j,i+1,n) add(i,j);
  63. int mx=-oo;
  64. rep(i,1,n) rep(j,i+1,n){
  65. int cha=a[i]-a[j];
  66. if(get(i,j,cha)){
  67. mx=max(a[i],mx);
  68. }
  69. int cha2=a[j]-a[i];
  70. if(get(j,i,cha2)){
  71. mx=max(a[j],mx);
  72. }
  73. }
  74. if(mx==-oo) printf("no solution\n");
  75. else println(mx);
  76. }
  77. return 0;
  78. }

UVA - 10125 哈希的更多相关文章

  1. UVA 10125 - Sumsets(POJ 2549) hash

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. uva 10125 - Sumsets

    题意: 输入n,然后输入n个数字,,要在这n个数字中找出a,b,c,d..满足a,b,c,d是不同元素,并且a + b + c = d...求出最大的d 直接暴力时间复杂度为O(n^4)..会超时.. ...

  3. 【HASH】【UVA 10125】 Sumset

    传送门 Description 给定一个整数集合S,求一个最大的d,满足a+b+c=d,其中a,b,c,d∈S Input 多组数据,每组数据包括: 第一行一个整数n,代表元素个数 下面n行每行一个整 ...

  4. uva 10125 二分

    https://vjudge.net/problem/UVA-10125 和之前做过的一道a+b+c=X的问题类似,不过这个要求多了a+b+c=d-->a+b=d-c  且abcd互不相等 我们 ...

  5. uva 1390 - Interconnect(期望+哈希+记忆化)

    option=com_onlinejudge&Itemid=8&page=show_problem&category=514&problem=4136&mosm ...

  6. UVA 10651 Pebble Solitaire(bfs + 哈希判重(记忆化搜索?))

    Problem A Pebble Solitaire Input: standard input Output: standard output Time Limit: 1 second Pebble ...

  7. UVA - 12338 Anti-Rhyme Pairs (哈希)

    Description D Anti-Rhyme Pairs Input: Standard Input Output: Standard Output Often two words that rh ...

  8. UVA 11019 Matrix Matcher(哈希)

    题意 给定一个 \(n\times m\) 的矩阵,在给定一个 \(x\times y\) 的小矩阵,求小矩阵在大矩阵中出现的次数. \(1 \leq n,m \leq 1000\) \(1\leq ...

  9. UVa 10118 免费糖果(记忆化搜索+哈希)

    https://vjudge.net/problem/UVA-10118 题意: 桌上有4堆糖果,每堆有N颗.佳佳有一个最多可以装5颗糖的小篮子.他每次选择一堆糖果,把最顶上的一颗拿到篮子里.如果篮子 ...

随机推荐

  1. 数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing 标签: 图像处理MATLAB 2017

    实验要求: Objective: To know how to implement image enhancement for color images by histogram processing ...

  2. 对于 yii2 高级模板 生成文件入口

    安装的 advanced 模板web下是没有index.php 方法: 在advanced 目录下有个init.bat 应用程序  双击即可如下 查看advanced 目录 (刷新)如下 已有:

  3. memset函数使用

    函数原型 void *memset(void *s,int c,size_t n): 功能 将已开辟内存空间 s 的首 n 个字节的值设为值 c. 头文件  #include<memory.h& ...

  4. BZOJ3223 文艺平衡树(splay)

    题目背景 这是一道经典的Splay模板题——文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1, ...

  5. DELPHI XE5 UP2 运行IOS 遇到 Wrapper init failed: (null)问题的解决办法

    一.问题表现: 在MAC OSX(10.9.2)上安装了比较新的XCODE5.1 和COMMAND LINE TOOLS 在DELPHI XE5 UP2上放了一个按钮,输出到MAC OSX上,出现: ...

  6. HTML5 Canvas游戏开发实战 PDF扫描版

    HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...

  7. 小程序上传多图片多附件多视频 c#后端

    前言: 最近在研究微信小程序,本人自己是C#写后端的;感觉小程序挺好玩的,就自己研究了一下:刚好今天又给我需求,通过小程序上传多图 然后C#后端保存到服务器: 用NET明白 前端上传需要用到流,然后就 ...

  8. IE11下使用fixed定位时鼠标滚动不平滑

    很久不用IE了,近期做兼容性测试发现一个fixed定位的问题,当元素使用fixed定位时,其应该不随页面滚动,在chrome/firefox/edge下都很完美,元素完全不动,但是使用IE11时,如果 ...

  9. strcmp返回值布尔类型的判断

    strcmp: 用于比较两个字符串,原型如下: int strcmp ( char const *s1, char const *s2):如果s1小于s2,strcmp函数返回一个小于零的值.如果s1 ...

  10. kali linux之主动信息收集(二层发现)

    主动信息收集: 直接与目标系统交互信息,无法避免留下访问的痕迹 使用受控的第三方电脑进行探测,如(使用代理或者使用肉鸡,做好被封杀的准备,使用噪声迷惑目标,淹没真实的探测流量) 识别活着的主机,会有潜 ...