nupt1207(重数问题)

1.统计重数及次数。

2.hash。%p,若冲突,则向后移动。

******************************

#include<cstdio>
#include<cstring>
#include<algorithm>
using
namespace std;
const int maxn=5000000;
const int p=1200007;
struct
Node
{
    int cnt,x;
}hash[maxn];
int
main()
{
   
//freopen("in","r",stdin);
    int n;
   
while(~scanf("%d",&n))
   
{
        int
x;
        for(int
i=1;i<=n;i++)
       
{
           
scanf("%d",&x);
           
int
tmp=x%p;
           
if(hash[tmp].cnt==0)hash[tmp].cnt++,hash[tmp].x=x;
           
else
if(hash[tmp].x==x)hash[tmp].cnt++;
           
else
           
{
               
while((hash[tmp].cnt!=0) &&
(hash[tmp].x!=x))
                   
tmp++;
               
if(hash[tmp].cnt)hash[tmp].cnt++;
               
else
hash[tmp].cnt++,hash[tmp].x=x;
           
}
       
}
       
if(n==1)
       
{
           
printf("%d\n%d\n",x,1);
           
continue;
       
}
        int
ans1=0,ans2=0;
        for(int
i=0;i<p+p;i++)
       
{
           
if(hash[i].cnt>ans2)
               
ans2=hash[i].cnt,ans1=hash[i].x;
           
else if(hash[i].cnt==ans2 &&
ans1>hash[i].x)
                       
ans1=hash[i].x;
       
}
       
printf("%d\n%d\n",ans1,ans2);
    }
   
return 0;
}

******************************

nupt1207(重数问题),布布扣,bubuko.com

时间: 2024-10-20 14:13:07

nupt1207(重数问题)的相关文章

Python 快速统计数据的去重数和去重数据

之前用 Python 写过一个脚本,用来处理上千万用户的一些数据,其中有一个需求是统计用户的某一数据的去重数量.为了加快程序的速度,我启用了多进程.但不幸的是,程序跑了近一个星期,还没处理完.这时,我感觉到了不对,于是开始查看程序的性能瓶颈. 对于统计去重数,我是将用户的数据放到一个列表中,然后用 len(set(data)) 去统计去重数量.刚开始我以为这的数据量并不大,每个用户的数据不会过百,我并没有注意到有的用户会有上万条的数据,因此消耗了大量的时间(其实我的脚本消耗时间最大的地方是因为从

UML之类图

一.类:通常可以分为三种,分别是实体类(Entity Class).控制类(Control Class)和边界类(Boundary Class),下面对这三种类加以简要说明: (1) 实体类:实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类.实体类来源于需求说明中的名词,如学生.商品等. (2) 控制类:控制类用于体现应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦

众数问题

描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30) 每组测试的第一行是一个整数m,表示多重集S中元素的个数为m 接下来的一行中给出m(m<100)个不大于10万的自然数 (不会出现不同元素出现的次数相同的情

高效的C指针

cnyinlinux 指针,被称做C语言编程的精华.其闻名数十年的秘诀在于,高效二字.今天我们讲的就是,指针是如何做到了这一切的. 经常你会看到这样的形式: XXX * func(int para1,-)://函数参数略 函数的返回值类型为指针,为何要返回一个指针呢? 指针在C中代表的是一片内存,也就意味着该函数返回时,将一片内存带给了原调函数(调用该函数的函数称为原调函数).这样做的目的是将函数处理结果存于内存,直接把存储地址返回.这样原调函数在获取结果的时候不必要再复制数据,直接在返回指针指

23种设计模式【转】

23种设计模式 目录 创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) 4. Prototype(原型) 5. Singleton(单例) 结构型 6. Adapter Class/Object(适配器) 7. Bridge(桥接) 8. Composite(组合) 9. Decorator(装饰) 10. Facade(外观) 11. Flyweight(享元) 12. Proxy(代理) 行为型 13.

NYOJ-众数问题

众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数.例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3. 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数. 输入 第一行为n,表示测试数据组数.(n<30) 每组测试的第一行是一个整数m,表示多重集S中元素的个数为m 接下来的一行中

leetcode-1 Two Sum 找到数组中两数字和为指定和

 问题描述:在一个数组(无序)中快速找出两个数字,使得两个数字之和等于一个给定的值.假设数组中肯定存在至少一组满足要求. <剑指Offer>P214(有序数组) <编程之美>P176 Que:Given an array of integers, find twonumbers such that they add up to a specific target number. The function twoSum should return indices ofthe tw

用OpenGL进行曲线、曲面的绘制

实验目的 1)理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 2)掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条三次Bezier曲线 #include "stdafx.h" #include <stdlib.h> #include <time.h> #include <GL/glut.h> //4个控制点的3D坐标--z坐标全为0 GLfloat ctrl

PCA原理(转)

PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维.网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理.这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么. 当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙述PCA的数学原理,所以整个文章不会引入严格的数学推导.希望读者在