Code[VS] 1230 题解

1230 元素查找

题目描述 Description

  给出n个正整数,然后有m个询问,每个询问一个整数,询问该整数是否在n个正整数中出现过。

输入描述 Input Description

  第一行两个整数 n 和m。

  第二行n个正整数(1<=n<= 100000)

  第三行m个整数(1<=m<=100000)

输出描述 Output Description

  一共m行,若出现则输出YES,否则输出NO

样例输入 Sample Input

  4 2

  2 1 3 4

  1 9

样例输出 Sample Output

  YES

  NO

数据范围及提示 Data Size & Hint

  所有数据都不超过10^8

———————————————分割线———————————————

Hash Table 练习题

#include "bits/stdc++.h"

using namespace std ;
const int MOD = 10000007 ;
const int maxN = 1e5 + 1e3 ;
typedef long long QAQ ;

int cnt ;
int Next[ MOD << 1 ] , Head[ MOD << 1 ] , End[ MOD << 1 ] ;
int A[ maxN ] ;

inline int INPUT ( ) {
        int x = 0 , f = 1 ; char ch = getchar ( ) ;
        while ( ch < ‘0‘ || ‘9‘ < ch ) { if ( ch == ‘-‘ ) f = -1 ; ch = getchar ( ) ; }
        while ( ‘0‘ <= ch && ch <= ‘9‘ ) { x = ( x << 1 ) + ( x << 3 ) + ch - ‘0‘ ; 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 ) , 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 ) , y ;
        for ( int i=Head[ pos ] ; y = End[ i ] , i ; i = Next[ i ] ) if ( y == tmp ) return ;
        Hash_Link ( tmp , pos ) ;
}

int main ( ) {
        int N = INPUT ( ) , Q = INPUT ( ) ;
        for ( int i=1 ; i<=N ; ++i ) {
                A[ i ] = INPUT ( ) ;
                if ( !Find ( A[ i ] ) )
                        Hash_Add ( A[ i ] ) ;
        }
        while ( Q -- ) {
                if ( Find ( INPUT ( ) ) ) cout << "YES" << endl ;
                else cout << "NO" << endl ;
        }
        return 0 ;
}

2016-10-26 00:14:00

时间: 2024-11-15 13:46:29

Code[VS] 1230 题解的相关文章

ACM/ICPC 之 Prim范例(ZOJ1586-POJ1789(ZOJ2158))

两道Prim解法范例题型,简单的裸Prim,且两题相较以边为重心的Kruskal解法而言更适合以点为重心扩展的Prim解法. ZOJ1586-QS Network 题意:见Code 题解:直接的MST题型,本题的图为稠密图,因此适合以点为扩展导向的Prim算法(代码量也较少). 大抵是先以某点A为中心,标记点A,访问其邻接点,更新全图到该点的距离(不通路以INF表示),找出最短距离的点B 标记最短距离的B点,然后访问其邻接点,更新邻接点到B点的最短距离,找出最短距离的点C...以此类推... 将

Code[VS] 2370 LCA 题解

Code[VS] 2370 小机房的树 题解 LCA 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天,他们想爬到一个节点上去搞基,但是作为两只虫子,他们不想花费太多精力.已知从某个节点爬到其父亲节点要花费 c 的能量(从父亲节点爬到此节点也相同),他们想找出一条花费精力最短的路,以使得搞基的时候精力旺盛,他们找到你要你设计一个程序来找到这条路,要求你告诉他们最少需要花费多少精力 输入描述 I

Code[VS]1690 开关灯 题解

Code[VS]1690 开关灯 题解  时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description: YYX家门前的街上有N(2<=N<=100000)盏路灯,在晚上六点之前,这些路灯全是关着的,六点之后,会有M(2<=m<=100000)个人陆续按下开关,这些开关可以改变从第i盏灯到第j盏灯的状态,现在YYX想知道,从第x盏灯到第y盏灯中有多少是亮着的(1<=i,j,x,y<=N) 输入描述 Input

Code[VS] 1022 覆盖 题解

Code[VS] 1022 覆盖 题解 Hungary Algorithm 题目传送门:Code[VS] 1022 题目描述 Description 有一个N×M的单位方格中,其中有些方格是水塘,其他方格是陆地.如果要用1×2的矩阵区覆盖(覆盖过程不容许有任何部分重叠)这个陆地,那么最多可以覆盖多少陆地面积. 输入描述 Input Description 输入文件的第一行是两个整数N,M  (1<=N,M<=100),第二行为一个整数K( K<=50),接下来的K行,每行两个整数X,Y表

Code[VS]1021 玛丽卡题解

Code[VS]1021 玛丽卡题解 SPFA Algorithm 题目传送门:http://codevs.cn/problem/1021/ 题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间. 麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路.无论哪一条路正在维修,从玛丽卡

Code[VS] 2152 滑雪题解

Code[VS] 2152 滑雪题解 题目描述 Description trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形.为了得到更快的速度,滑行的路线必须向下倾斜.例如样例中的那个矩形,可以从某个点滑向上下左右四个相邻的点之一.例如24-17-16-1,其实25-24-23…3-2-1更长,事实上这是最长的一条. 输入描述 Input Description 输入文件 第1行: 两个数字r,c(1<=r,c<=100),表示矩阵的行列.第

Code[VS] 1332 上白泽慧音题解

Code[VS] 1332 上白泽慧音题解 Tarjan Algorithm 题目传送门:http://codevs.cn/problem/1332/ 题目描述 Description 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点.人间之里由N个村庄(编号为1..N)和M条道路组成,道路分为两种一种为单向通行的,一种为双向通行的,分别用1和2来标记.如果存在

code hunt题解(1)

code hunt 这个网站类似于learn codecademyd,都是通过闯关,给你一些碎片化的程序片段,然后你需要完成它需要你返回的结果.但是怎么说呢,code hunt的题目更加无厘头一点,因为他只会给你一些你需要返回的数据,而并没有明确说明如何得到.所以它更类似游戏(有人说这是微软的网游,其实真的很不错,安利一下).当然这个网站也有C#的学习(貌似网上有大牛看书刷这个就进了编程之美C#复赛,哈哈哈想想那些学C#的还天天打游戏的人,多亏我来hit了)逃.恩,注册一个微软账号或者faceb

LeetCode:Gray Code 题解

题目描述: The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with