20161022 NOIP模拟赛 解题报告
好元素
【问题描述】
小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
————————————分割线————————————
10% n^4 随便做。
40% n^3 用布尔数组保存存在的元素,用三层枚举a[i],a[j],a[k],如果a[i]+a[j]+a[k]存在,那么答案加1。注意枚举顺序和判重。
70% n^2 预处理两个数的和,再枚举,因为每一个元素值比较小,开一个数组来存储是否存在。(其实n^3的方法加上剪枝也可以过)
100% n^2 因为元素的值比较大,在70%的思想上用哈希进行判断即可。
拉链法Hash即可。
#include "cstdio"
#include "cstring"
#include "algorithm"
#include "iostream"
#include "fstream"
#include "stack"
#include "set"
#include "queue"
#include "deque"
#include "ctime"
#include "cstdlib"
#include "sstream"
#include "cctype"
#include "cmath" using namespace std ;
const int MOD = ;
const int maxN = 5e3 + 1e2 ;
const int _max_ = 5e7 + 1e2 ;
typedef long long QAQ ; int cnt ;
int Next[ MOD << ] , Head[ MOD << ] , End[ MOD << ] ;
int A[ maxN ] ; inline int INPUT ( ) {
int x = , f = ; char ch = getchar ( ) ;
while ( ch < '' || '' < ch ) { if ( ch == '-' ) f = - ; ch = getchar ( ) ; }
while ( '' <= ch && ch <= '' ) { x = ( x << ) + ( x << ) + ch - '' ; ch = getchar ( ) ; }
return x * f ;
} inline int Hash_Function ( int x ) {return ( ( x % MOD ) + MOD ) % MOD ; }//散列函数 inline bool Find ( const int tmp ) {
int pos = Hash_Function ( tmp ) ;
int y ;
for ( int i=Head[ pos ] ; y = End[ i ] , i ; i = Next[ i ] ) {//查找
if ( y == tmp ) return true ;
}
return false ;
} inline void Hash_Link ( const int tmp , const int pos ) {//用链表拉链
Next[ ++cnt ] = Head[ pos ] ;
Head[ pos ] = cnt ;
End[ cnt ] = tmp ;
} inline void Hash_Add ( const int tmp ) {
int pos = Hash_Function ( tmp ) ;
int y ;
for ( int i=Head[ pos ] ; y = End[ i ] , i ; i = Next[ i ] ) {
if ( y == tmp ) return ; //判重
}
Hash_Link ( tmp , pos ) ;
} int main ( ) {
freopen ( "good.in" , "r" , stdin ) ;
freopen ( "good.out" , "w" , stdout ) ;
int N = INPUT ( ) ;
QAQ Ans = ;
for ( int i= ; i<=N ; ++i ) {
A[ i ] = INPUT ( ) ;
for ( int j= ; j<i ; ++j ) if ( Find ( A[ i ] - A[ j ] ) ) { ++Ans ; goto Loop ; }
Loop :
for ( int j= ; j<=i ; ++j ) Hash_Add ( A[ i ] + A[ j ] ) ;
}
//cout << endl ;
cout << Ans << endl ;
return ;
}
2016-10-24 15:04:28
20161022 NOIP模拟赛 解题报告的更多相关文章
- 2018.10.16 NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...
- 9月24日noip模拟赛解题报告
1.校门外的树(tree.c/cpp/pas 128M,1s) Description LSGJ扩建了,于是校门外有了一条长为L的路.路上种了一排的树,每相邻两棵树之间的距离为1,我们可以把马路看成一 ...
- 2018-11-1 NOIP 模拟赛解题报告
T1 Domino 多米诺骨牌 题目大意 给你N个骨牌,上下各有一个数,要使上面一排的和为偶数,同时下面一排的和也为偶数,最多要翻转多少次?如果无法达成那么输出-1. 解法 水题秒切 根据数的奇偶性质 ...
- 2015-9-13 NOIP模拟赛解题报告(by hzwer)
小奇挖矿 「题目背景」 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞过喵星系的n个星球. 「问题描述」 星球分为2类:资源型和维修型. 1.资源型:含矿物质量a[i ...
- 2018.10.03 NOIP+ 模拟赛 解题报告
得分: \(30+5+0=35\)(考得真不咋滴) \(T1\):奥义商店(点此看题面) 以为很简单,对着这题想了一个多小时,最后果断打了个暴力交了... ... 看完题解发现其实也不是很难. 对于\ ...
- 2017.9.17校内noip模拟赛解题报告
预计分数:100+60+60=220 实际分数:100+60+40=200 除了暴力什么都不会的我..... T1 2017.9.17巧克力棒(chocolate) 巧克力棒(chocolate)Ti ...
- 10.30 NFLS-NOIP模拟赛 解题报告
总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...
- 2018.10.26NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 70\) 实际得分:\(40 + 100 + 70\) 妈妈我又挂分了qwq..T1过了大样例就没管,直到临考试结束前\(10min\)才发现大样例是假 ...
- 2018.10.17NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...
随机推荐
- Ubuntu16.04安装Screenlets
通过添加软件源的方式安装装 sudo add-apt-repository ppa:screenlets/ppa sudo apt-get update sudo apt-get install sc ...
- python之路十二
本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql ORM sql ...
- STM32F412应用开发笔记之六:使用片上Flash存储参数
我们的项目中需要保存一些系统配置参数,这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能.这就需要考虑这些参数保存的问题.将这类数据存在指定 ...
- 377. Combination Sum IV
问题 Given an integer array with all positive numbers and no duplicates, find the number of possible c ...
- UIScrollView设置滑动的距离
设置好scrollView.width即是控制滑动的距离, scrollView.clipsToBounds = NO;控制是否显示多出的部分(可灵活运用)
- js变量及其作用域(附例子及讲解)
Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量 工具/原料 Ch ...
- centos下建立双机信任关系
在有些情况下,我们希望在两台centos机器之间建立ssh连接的时候,可以不用输入密码.最常见的情况就是在使用脚本做数据库备份的时候.这种情况下,我们可以通过公钥/私钥来建立双机之间的信任关系. 网上 ...
- Lintcode 375.克隆二叉树
-------------------------- 水题 AC代码: /** * Definition of TreeNode: * public class TreeNode { * public ...
- mysql提供dataprovider
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Inpu ...
- 小书翻译完成,分享啦--《用Python操作大数据[MapReduceHadoop和Spark]》
http://files.cnblogs.com/files/aguncn/%E7%94%A8Python%E6%93%8D%E4%BD%9C%E5%A4%A7%E6%95%B0%E6%8D%AE%5 ...