原题链接

题解

题目大意:
给出N个数,要求把其中重复的去掉,只保留第一次出现的数。
最后按顺序输出
N <= 50000

然这题是个哈希的典型题目

HASH,我对于它的理解就是一个桶%一个数,当然并不是如此,有很多更好的HASH函数可以更好的减少冲突,例如非十进制数等。

HASH一般用来处理一个元素是否在一个集合内,大部分的时候二分查找+快速排序可以代替这个功能(STL中也有专门用来去重的),但在有些题目的运用上,则必须用到HASH

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
using namespace std;
typedef long long ll;
const int N=5e4+;
ll f[N];
int T,n,z;
inline ll read()//读入优化
{
ll X=,w=; char ch=;
while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}
while(isdigit(ch)) X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
int find(ll x) {//查找x在HASH表中的位置
int y=x%N,yy=y;bool a=;
while(f[y]!= && f[y]!=x) {//若此位置已经有数并且没有找到这个数
y=(yy*-y+a)%N;
a=!a;
}
if (f[y]==) return y;//判断x在不在hash表
else return -;
}
int main() {
T=read();
while(T--) {//t组数据
memset(f,,sizeof(f));
n=read();
for(int i=; i<=n; i++) {
ll a=read();
z=find(a);
if (z!=-) {//若不在HASH表中,即没有出现过
printf("%lld ",a);//输出它
f[z]=a;//并把它放入HASH表
}
}
puts("");
}
}

[JLOI2011]不重复数字的更多相关文章

  1. [BZOJ2761][JLOI2011]不重复数字

    [BZOJ2761][JLOI2011]不重复数字 试题描述 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复 ...

  2. BZOJ 2761: [JLOI2011]不重复数字 水题

    2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2100  Solved: 809 题目连接 http:// ...

  3. bzoj 2761 [JLOI2011]不重复数字(哈希表)

    2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3210  Solved: 1186[Submit][Sta ...

  4. 2761: [JLOI2011]不重复数字(平衡树)

    2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2133  Solved: 825[Submit][Stat ...

  5. 2761: [JLOI2011]不重复数字(哈希表)

    2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1770  Solved: 675[Submit][Stat ...

  6. 题解 P4305 【[JLOI2011]不重复数字】

    来一波用vector的最短代码题解 P4305 [JLOI2011]不重复数字 关于hash表的部分大家可以看一看其他的题解,我就不说了 不定长数组vector的几个基本用法: 定义: vector& ...

  7. [BZOJ2761] [JLOI2011] 不重复数字 (C++ STL - set)

    不重复数字 题目:         给出N个数,要求把其中重复的去掉,只保留第一次出现的数.例如,给出的数 为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 1 ...

  8. 【BZOJ】2761: [JLOI2011]不重复数字(set+巨水题+超坑题)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2761 太水了,不说了. 但是这格式错误我已经没话说了....行末不能有空格 #include < ...

  9. 【bzoj2761】[JLOI2011]不重复数字

    给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4. Inpu ...

  10. [BZOJ2761] [JLOI2011] 不重复数字 (set)

    Description 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 ...

随机推荐

  1. Learning-Python【13】:迭代器和生成器

    一.什么是迭代器 迭代指的是一个重复的过程,每一次重复都是基于上一次的结果而来的 # 这里的循环也是一个迭代,每次基于上一次的结果而取值 li = 'hello' i = 0 while i < ...

  2. 使用python+hadoop-streaming编写hadoop处理程序

    Hadoop Streaming提供了一个便于进行MapReduce编程的工具包,使用它可以基于一些可执行命令.脚本语言或其他编程语言来实现Mapper和 Reducer,从而充分利用Hadoop并行 ...

  3. DataTable与List的相互转换

    List转DataTable: public static DataTable ToDataTable<T>(IEnumerable<T> collection) { var ...

  4. [shell] 脚本使用 【记录】

    1.nginx日志切割 vi /var/log/nginx/cut_nginx_log.sh #!/bin/bash date=$(date +%F -d -1day) cd /var/log/ngi ...

  5. centos的防火墙相关

    在服务器上启动了node服务,但是外面访问不到, 原因是防火墙没开端口,新装的机器,也没有iptables systemctl stop firewalld yum install iptables- ...

  6. HSV色彩空间和颜色分量范围

    部分来自: https://wenku.baidu.com/view/eb2d600dbb68a98271fefadc.html http://blog.csdn.net/Taily_Duan/art ...

  7. Python3编译安装以及创建虚拟运行环境

    一.yum安装pip# yum -y install epel-release   #Centos6.8安装epel源# yum -y install python-pip手动安装pip# wget ...

  8. faker 模块

    faker是python的一个第三方模块,是一个github上的开源项目. 主要用来创建一些测试用的随机数据 文档:https://faker.readthedocs.io/en/master/ind ...

  9. SASS 简单实用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. ubuntu14.04安装 Apache2 并配置https

    一.安装 Apache2 sudo apt-get update sudo apt-get install apache2 安装完apache2,默认根目录在/var/www/html 下,点击其下的 ...