zoukankan      html  css  js  c++  java
  • NYOJ254 编号统计

     

    编号统计

    时间限制:2000 ms  |  内存限制:65535 KB
    难度:2
     
    描述
    zyc最近比较无聊,于是他想去做一次无聊的统计一下。他把全校同学的地址都统计了一下(zyc都将地址转化成了编码),然后他希望知道那个地方的同学最多(如果同学最多的地方有多个,输出编号最小的一个)。
     
    输入
    第一行输入一个正整数T(0<T<=11)表示有T组测试数据
    每组测试数据第一行输入一个正整数N(0<N<200000)表示有N个编号,随后输入N个编码(编码由数字组成且少于十位)
    输出
    每组数据输出占一行输出出现次数最多的编号
    样例输入
    1
    5
    12345 456 45 78 78
    样例输出
    78
      1 //2011-11-27 :代码一:超时代码
      2 /*
      3 #include<stdio.h>
      4 #include<malloc.h>
      5 typedef struct 
      6 {
      7     int site;//地址编号
      8     int num;//该地址下人数
      9 }stu;
     10 int main()
     11 {
     12     int t,i,j,n;
     13     stu *a,max;
     14     scanf("%d",&t);
     15     while(t--)
     16     {
     17         scanf("%d",&n);
     18         a=(stu*)malloc(n*sizeof(stu));
     19         for(i=0;i<n;++i)
     20         {
     21             a[i].num=1;
     22             scanf("%d",&a[i].site);
     23             for(j=0;j<i;++j)
     24             {
     25                 if(a[j].site==a[i].site)
     26                 {
     27                     ++a[j].num;
     28                     --i;
     29                     --n;
     30                     break;
     31                 }
     32             }
     33         }
     34         for(i=0;i<n;++i)
     35         {
     36             if(!i)
     37             {
     38                 max=a[0];
     39                 continue;
     40             }
     41             if(max.num<a[i].num)
     42                 max=a[i];
     43             else if(max.num==a[i].num)
     44                 max=max.site<a[i].site?max:a[i];
     45         }
     46         printf("%d\n",max.site);
     47         free(a);
     48     }
     49     return 0;
     50 }
     51 */
     52 
     53 /*
     54  //代码二:-----字典树(超时依旧)
     55 #include<cstdio>
     56 #include<cstring>
     57 
     58 struct tree
     59 {
     60     int sum;
     61     struct tree *next[10];
     62 };
     63 int max;
     64 char num[15];
     65 
     66 void insert(char *s,tree *T)
     67 {
     68     tree *p,*q;
     69     int i,j,id;
     70     p=T;
     71     i=0;
     72     while(s[i])
     73     {
     74         id=s[i]-'0';
     75         if(p->next[id]==NULL)
     76         {
     77             q=new tree;
     78             q->sum=0;
     79             for(j=0;j<10;++j)
     80                 q->next[j]=NULL;
     81             p->next[id]=q;
     82         }
     83         p=p->next[id];
     84         ++i;
     85     }
     86     p->sum++;
     87     if(p->sum>max)
     88     {
     89         max=p->sum;
     90         strcpy(num,s);
     91     }
     92 }
     93 
     94 int main()
     95 {
     96     int m,i,n;
     97     char s[15];
     98     tree *T;
     99     scanf("%d",&m);
    100     while(m--)
    101     {
    102         T=new tree;
    103         T->sum=0;
    104         for(i=0;i<10;++i)
    105             T->next[i]=NULL;
    106         scanf("%d",&n);
    107         max=0;
    108         while(n--)
    109         {
    110             scanf("%s",s);
    111             insert(s,T);
    112         }
    113         printf("%s\n",num);
    114     }
    115     return 0;
    116 }
    117 
    118 */
    119 
    120 //代码三:----人就容易手定向思维的影响---本题排序后直接求最长平台即可
    121 #include<cstdio>
    122 #include<algorithm>
    123 using namespace std;
    124 
    125 int main()
    126 {
    127     int T,n,i,k,max,count;
    128     int *num;
    129     scanf("%d",&T);
    130     while(T--)
    131     {
    132         scanf("%d",&n);
    133         num=new int[n];
    134         for(i=0;i<n;++i)
    135             scanf("%d",&num[i]);
    136         sort(num,num+n);
    137         max=0;
    138         count=1;
    139         for(i=1;i<n;++i)
    140         {
    141             while(num[i]==num[i-1])
    142             {
    143                 ++count;
    144                 ++i;
    145             }
    146             if(max<count)
    147             {
    148                 max=count;
    149                 k=num[i-1];
    150             }
    151             count=1;
    152         }
    153         printf("%d\n",k);
    154     }
    155     return 0;
    156 }
    功不成,身已退
  • 相关阅读:
    前序遍历和中序遍历树构造二叉树
    2014百度之星初赛第一场部分题解
    爬虫小记--抓取过程简要分析
    前端程序猿必知:单页面应用的核心
    swift -类的定义及使用
    【Unity优化】怎样实现Unity编辑器中的协程
    poj 1125 (floyed 最短路径)
    Android API Guides---Tasks and Back Stack
    循环-16. 猴子吃桃问题(15)
    零java基础搞定微信Server
  • 原文地址:https://www.cnblogs.com/dongsheng/p/2652906.html
Copyright © 2011-2022 走看看