☆   输入文件:random.in   输出文件:random.out   简单对比
时间限制:1 s   内存限制:128 MB

【问题描述】
    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数( N ≤ 100 ),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按 照 排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

【输入格式】 
     输入文件 random.in 有 2 行,第 1 行为 1 个正整数,表示所生成的随机数的个数:N

第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。

【输出格式】 
     输出文件 random.out 也是 2 行,第 1 行为 1 个正整数 M ,表示不相同的随机数的个数。第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

【输入输出样例】
 
输入: 
10
20 40 32 67 40 20 89 300 400 15

输出:
8
15 20 32 40 67 89 300 400

splay练习 。。

屠龙宝刀点击就送

#include <ctype.h>
#include <cstdio>
bool vis[];
int siz[],cnt[],n,data[],cn,root,tot,fa[],ch[][];
void read(int &x)
{
x=;bool f=;
register char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=;
for(;isdigit(ch);ch=getchar()) x=x*+ch-'';
x=f?(~x)+:x;
}
inline void pushup(int rt)
{
int l=ch[rt][],r=ch[rt][];
siz[rt]=siz[l]+siz[r]+cnt[rt];
}
void ins(int &rt,int x)
{
if(rt==)
{
rt=++tot;
data[tot]=x;
siz[tot]=cnt[tot]=;
return;
}
if(x==data[rt])
{
cnt[rt]++;
siz[rt]++;
return;
}
if(x<data[rt])
{
ins(ch[rt][],x);
fa[ch[rt][]]=rt;
pushup(rt);
}
else
{
ins(ch[rt][],x);
fa[ch[rt][]]=rt;
pushup(rt);
}
}
int getkth(int rt,int k)
{
int l=ch[rt][];
if(siz[l]+<=k&&k<=siz[l]+cnt[rt]) return data[rt];
if(k<siz[l]+) return getkth(ch[rt][],k);
if(siz[l]+cnt[rt]<k) return getkth(ch[rt][],k-(siz[l]+cnt[rt]));
}
int main()
{
freopen("random.in","r",stdin);freopen("random.out","w",stdout);
read(n);
for(int a,i=;i<=n;i++)
{
read(a);
if(!vis[a])
{
vis[a]=;
cn++;
ins(root,a);
}
}
printf("%d\n",cn);
for(int i=;i<=cn;i++) printf("%d ",getkth(root,i));
return ;
}

COGS 74. [NOIP2006] 明明的随机数 (Splay小练习。。)的更多相关文章

  1. NOIP 2006 明明的随机数

    洛谷 P1059 明明的随机数 洛谷传送门 JDOJ 1423: [NOIP2006]明明的随机数 T1 JDOJ传送门 Description 明明想在学校中请一些同学一起做一项问卷调查,为了实验的 ...

  2. wikioi 1075 明明的随机数

    /*============================================================ 1075 明明的随机数 题目描述 Description 明明想在学校中请 ...

  3. C语言 · 明明的随机数

    算法训练 明明的随机数   时间限制:1.0s   内存限制:256.0MB      问题描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的 ...

  4. php实现 明明的随机数

    php实现 明明的随机数 一.总结 一句话总结: 1.asort是干嘛的? asort — 对数组进行排序并保持索引关系 2.从控制台取数据怎么取? trim(fgets(STDIN)) 3.多组测试 ...

  5. 明明的随机数(0)<P2006_1>

    明明的随机数 (random.pas/c/cpp) [问题描述] 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中 ...

  6. Java实现 蓝桥杯VIP 算法训练 明明的随机数

    问题描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应 ...

  7. 2006NOIP普及组:明明的随机数

    明明的随机数 时间限制:1000ms        内存限制:65536KB 题目描述: 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数 ...

  8. NOIP2006 1.明明的随机数

    题目:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不 ...

  9. 武汉科技大学ACM:1008: 明明的随机数

    Problem Description 明明想在学校中请一些同学一起做一项问卷 调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个, ...

随机推荐

  1. 基于阿里云上实现全站https的正确姿势(一)

    对应的网址:https://yq.aliyun.com/articles/65199 摘要: 目前主流大厂的网站和服务都已经实现了全站https, 例如: baidu, taobao, jd等. 关于 ...

  2. 最大网络流 EK 算法

    网络流是什么类型的问题,看一道题目你就知道了 点击打开链接 . 默认具备图论的基本知识,网络流概念比较多,先看看书熟悉一下那些概念.比较好!一个寄出的网络最大流.EK算法写的. 这是一幅网络,求S   ...

  3. 【AHOI2009】中国象棋

    [题目链接] 点击打开链接 [算法] 动态规划 f[i][j][k]表示前i行,有j列放了1个,有k列放了两个 分六种情况讨论即可 [代码] #include<bits/stdc++.h> ...

  4. Spring配置错误 No adapter for IAdvice of type

    参考:http://www.2cto.com/kf/201305/211728.html 错误十三 在配置拦截器后,运行的时候报错=> Error creating context 'sprin ...

  5. bzoj1087互不侵犯King——状压DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1087 水题... 然而犯了两个致命小错误,调了好半天...详见注释. 代码如下: #incl ...

  6. 【旧文章搬运】Windows句柄分配算法(一)

    原文发表于百度空间,2009-04-04========================================================================== 分析了Wi ...

  7. HDU 5901 Count primes (模板题)

    题意:给求 1 - n 区间内的素数个数,n <= 1e11. 析:模板题. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024 ...

  8. 洛谷 - P5000 - Hillwer编码 - 高精度

    https://www.luogu.org/problemnew/show/P5000 第一次写一个正经的高精度题. 很明显ASCII码的乘积绝对是溢出的. 那么直接上Java.正好学一手Java的字 ...

  9. Android笔记---常用控件以及用法

    这篇文章主要记录下Android的常用控件以及使用的方法,Android 给我们提供了大量的UI控件,合理地使用这些控件就可以非常轻松地编写出相当不错的界面,这些是Android学习的基础,没有什么业 ...

  10. Codeforces703B Mishka and trip

    题意: 就是有n个点,本来相邻点之间就有一条边,1和n之间也有一条,然后给你几个特殊点,说这些特殊点和其他所有点都连起来了,然后算一个所有边的权值和,每条边的权值等于两个点的c相乘. 思路: 水题啊- ...