bzoj5204: [CodePlus 2018 3 月赛]投票统计(离散化+暴力)
2024-10-01 12:33:58
5204: [CodePlus 2018 3 月赛]投票统计
题目:传送门
题解:
谢谢niang老师的一道sui题
离散化之后直接搞啊(打完之后还错了...)
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int T;
struct node
{
int x,y,id;
}a[],b[];int s[],ans[],A[];
bool v[];
bool cmp(node n1,node n2){return n1.x<n2.x;}
int main()
{
scanf("%d",&T);
while(T--)
{
int n,m=;scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i].x),a[i].y=i;
for(int i=;i<=n;i++)b[i]=a[i];
sort(b+,b+n+,cmp);
b[].id=;
for(int i=;i<=n;i++)
{
if(b[i].x!=b[i-].x)b[i].id=b[i-].id+;
else b[i].id=b[i-].id;
}
for(int i=;i<=n;i++)a[b[i].y].id=b[i].id,m=max(m,b[i].id);
for(int i=;i<=n;i++)ans[a[i].id]=a[i].x;memset(s,,sizeof(s));
int maxx=;for(int i=;i<=n;i++)s[a[i].id]++,maxx=max(s[a[i].id],maxx);int len=;
for(int i=;i<=m;i++)if(s[i]==maxx)A[++len]=ans[i];
if(len==m)printf("-1\n");
else
{
printf("%d\n",len);
for(int i=;i<len;i++)printf("%d ",A[i]);
printf("%d\n",A[len]);
}
}
return ;
}
最新文章
- android 横向滚动条
- node body-parser
- hdu 5102 树上前k短路径长度和
- uva 839 Not so Mobile-S.B.S.
- 《Java程序设计》实验二 实验报告
- Android外派(安卓外派) — 长年提供安卓开发工程师外派业务(可签合同)
- 转 android 侧滑实现
- c#Lamdba表达式与托付
- java多线程编程题之连续打印abc的几种解法
- Angular路由——路由守卫
- 运用SqlSugar框架+Axios写的增删查案例
- react-native清除android项目缓存的命令
- 服务器CPU繁忙或内存压力引起网络掉包的浅析与总结
- JavaScript 加解密库(crypto-js)
- Ubuntu18.04上安装java
- 分布式系统下的全局id生成策略分析
- bash 设置
- html禁止文本输入框记录输入记录,单击input出现输入过的记录
- JS时间格式和时间戳的互转
- Delphi报的错误