这是一道关于

2好元素

2s

【问题描述】

小A一直认为,如果在一个由N个整数组成的数列{An}中,存在以下情况:

Am+An+Ap = Ai (1 <= m, n, p < i <= N , m,n,p可以相同),那么Ai就是一个好元素。

现在小A有一个数列,请你计算数列中好元素的数目

【输入格式】

第一行只有一个正整数N,意义如上。

第二行包含N个整数,表示数列{An}。

【输出格式】

输出一个整数,表示这个数列中好元素的个数。

【输入样例】

Sample1

2

1 3

Sample2

6

1 2 3 5 7 10

Sample3

3

-1 2 0

【输出样例】

Sample1

1

Sample2

4

Sample3

1

【数据范围】

 对于10%的数据1<=N<=10

对于40%的数据1<=N<=500 -10^5<=Ai<=10^5

对于70%的数据1<=N<=5000 -10^6<=Ai<=10^6

对于100%的数据1<=N<=5000 -10^9<=Ai<=10^9

分析:

写这道题会发现数据非常大,而我们如果用n2的方法就会出现很有趣的现象,比如。炸时间。所以我们得用哈希表来解决这个问题。

接下来讲解一下哈希表是什么,及一些神奇的东西:

哈希表,又名散列表,将线性表(或者一群大数据)运用某种散列函数,将数据转化成一种关键字。关键字组成另一种可以用于快速查找的表。快速定位,快速查找是否存在该元素。。很多数据可能有相同的关键字,所以可以将关键字相同的数据连成一个新的线性表。

主要就是写散列函数,而散列函数有很多种写法。没有固定的套路。有些可以讲数据%一个大质数,将整个线性表叠在一个新的线性(但是有链表)的表里。可以用邻接表来表现。这有点绕其实就是下图的样子。A[]代表将数据转换成的关键字。后面连起来的东西就是关键字旗下的大数据。

当然有些也会用位运算,将后面几位相同的数组成一个线性序列。这道题其实就用这个方法。

。讲一下这道题的大致做法:

从前往后枚举,每次枚举1,最后的重点,2,前面的一个点,而我们哈希表里放的就是两个数之和,而我们在枚举的时候。可以及时更新哈希表。(在枚举完一个新点,就将这个点与前面的每个点的值的和加入哈希表)。其实就是枚举。但是这里优化时间优化的吓人。所以可以过//hhhhh。

放出代码:

#include<cstdio>
#include<algorithm>
using namespace std;
#define M 4194303
int line[5001];
int n,cnt;
int hashline[M+1];
int vale[12600001];
int next[12600001];
void address(int w)
{
vale[++cnt]=w;
next[cnt]=hashline[w & M];
hashline[w & M]=cnt;
return ;
}
bool pure(int w)
{
for(int i=hashline[w & M]; i ; i=next[i])
{
if(vale[i]==w)return true;
}
return false;
}
int ref()
{
int ans=0;
for(int i=1;i<=n;++i)
{
for(int j=1;j<i;++j)
{
if(pure(line[i]-line[j]))
{
++ans;
break;
}
}
for(int j=1;j<=i;++j){
address(line[i]+line[j]);
}
}
return ans;
}
int main()
{
freopen("good.in","r",stdin);
freopen("good.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;++i)scanf("%d",&line[i]);
int ans=ref();
printf("%d",ans);
fclose(stdin);
fclose(stdout);
return 0;
}

就是这样的东西。这个我认为比较好理解。还有就是。这个4194303数选的特别玄学。如果选小了。还过不了了?!!!!

noip模拟赛 好元素 哈希表的第一题的更多相关文章

  1. 【HHHOJ】NOIP模拟赛 玖 解题报告

    点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三 ...

  2. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  3. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

  4. Nescafe #29 NOIP模拟赛

    Nescafe #29 NOIP模拟赛 不知道这种题发出来算不算侵权...毕竟有的题在$bz$上是权限题,但是在$vijos$似乎又有原题...如果这算是侵权的话请联系我,我会尽快删除,谢谢~ 今天开 ...

  5. NOI.AC NOIP模拟赛 第五场 游记

    NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...

  6. 2016-06-19 NOIP模拟赛

          2016-06-19 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c ...

  7. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  8. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  9. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

随机推荐

  1. Windows Phone App的dump 文件分析

    前言 我们在发布了自己的App以后,Windows Phone的Error Report机制会帮助我们收集程序的崩溃信息并发送到微软的服务器上,这可以辅助开发者提高App的稳定性. 那么如何利用这些d ...

  2. 团队项目——站立会议DAY10

    第十次站立会议记录: 参会人员:张靖颜,钟灵毓秀,何玥,赵莹,王梓萱 项目进展: 1.张靖颜:进一步完善程序代码,提出扩展性的建议,增加程序的功能. 2.钟灵毓秀:修改已完成代码出现的bug,完善代码 ...

  3. [ZigBee] 2、 ZigBee开发环境搭建

    本节介绍ZigBee基本开发环境搭建,附件中有本节介绍的软件下载地址~ 链接:http://pan.baidu.com/s/1bLdqxg 1.IAR Embedded Workbench 的安装 S ...

  4. iOS——Core Animation 知识摘抄(二)

    阴影 主要是shadowOpacity .shadowColor.shadowOffset和shadowRadius四个属性 shadowPath属性 我们已经知道图层阴影并不总是方的,而是从图层内容 ...

  5. Laravel5.0学习--02 实例进阶

    本文以laravel5.0.22为例. 本节以新建一个简单的博客作为实例. 准备工作 数据库配置 .env文件(也可以直接修改config/database.php) DB_HOST=localhos ...

  6. Oracle使用小记

    windows下Oracle必须要启动的服务 Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service ...

  7. Atitit.java expression fsm 表达式词法分析引擎 v2 qaa.docx

    Atitit.java expression fsm 表达式词法分析引擎 v2 qaa.docx C:\0workspace\AtiPlatf_cms\src\com\attilax\fsm\Java ...

  8. Ajax技术使用

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. fir.im Weekly - 进击的 Swift

    最近 Swift 开源了,众开发者们欢呼雀跃.感谢开源,这是最好的时代.本期 fir.im Weekly 准备了一些关于 Swift 的"新鲜"干货分享,也包括一些优秀的 GitH ...

  10. IOS开发之控件篇UITabBarControllor第二章 - 遮掩TableView问题

    在IOS7.0以后UITabBar 里面放入一个UITableView会出现一个问题,Table会被TabBar掩盖了,当移动到最后一项的时候,永远看不到,如下面的例子,总共是99项,但是只能显示到9 ...