zoukankan      html  css  js  c++  java
  • bzoj5204: [CodePlus 2018 3 月赛]投票统计(离散化+暴力)

    5204: [CodePlus 2018 3 月赛]投票统计

    题目:传送门 


    题解:

       谢谢niang老师的一道sui题

       离散化之后直接搞啊(打完之后还错了...)

        


    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cstdlib>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 int T;
     8 struct node
     9 {
    10     int x,y,id;
    11 }a[110000],b[110000];int s[110000],ans[110000],A[110000];
    12 bool v[110000];
    13 bool cmp(node n1,node n2){return n1.x<n2.x;}
    14 int main()
    15 {
    16     scanf("%d",&T);
    17     while(T--)
    18     {
    19         int n,m=0;scanf("%d",&n);
    20         for(int i=1;i<=n;i++)scanf("%d",&a[i].x),a[i].y=i;
    21         for(int i=1;i<=n;i++)b[i]=a[i];
    22         sort(b+1,b+n+1,cmp);
    23         b[1].id=1;
    24         for(int i=2;i<=n;i++)
    25         {
    26             if(b[i].x!=b[i-1].x)b[i].id=b[i-1].id+1;
    27             else b[i].id=b[i-1].id;
    28         }
    29         for(int i=1;i<=n;i++)a[b[i].y].id=b[i].id,m=max(m,b[i].id);
    30         for(int i=1;i<=n;i++)ans[a[i].id]=a[i].x;memset(s,0,sizeof(s));
    31         int maxx=0;for(int i=1;i<=n;i++)s[a[i].id]++,maxx=max(s[a[i].id],maxx);int len=0;
    32         for(int i=1;i<=m;i++)if(s[i]==maxx)A[++len]=ans[i];
    33         if(len==m)printf("-1
    ");
    34         else
    35         {
    36             printf("%d
    ",len);
    37             for(int i=1;i<len;i++)printf("%d ",A[i]);
    38             printf("%d
    ",A[len]);
    39         }
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    随机验证码生成
    python之map和filter
    Json学习笔记
    动态规划求区间最值问题RMQ(Range Minimum/Maximum Query)
    积水问题
    5亿个数找中位数
    Linux下进程间通信:命名管道mkfifo
    Trie树总结
    树的公共祖先问题LCA
    类文件结构
  • 原文地址:https://www.cnblogs.com/CHerish_OI/p/8670199.html
Copyright © 2011-2022 走看看