BZOJ5204: [CodePlus 2018 3 月赛]投票统计
2024-10-01 17:02:20
【传送门:BZOJ5204】
简要题意:
有n个选手,每个选手会选择一道题投票,求出投票最多的题目个数和这些题目的编号,如果所有题目的投票数相同,则输出-1
题解:
直接搞
离散化,然后判断就可以了
参考代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
struct LSnode
{
int x,p,z;
}A[],B[];
int cmp(const void *x1,const void *x2)
{
LSnode n1=*(LSnode *)x1;
LSnode n2=*(LSnode *)x2;
return n1.x-n2.x;
}
int s[];
int id[];
int back[];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&A[i].x);
A[i].p=i;
}
for(int i=;i<=n;i++)
{
B[i].x=A[i].x;
B[i].p=A[i].p;
}
qsort(B+,n,sizeof(LSnode),cmp);
B[].z=;
for(int i=;i<=n;i++)
{
if(B[i].x==B[i-].x) B[i].z=B[i-].z;
else B[i].z=B[i-].z+;
}
int zz=;
for(int i=;i<=n;i++)
{
A[B[i].p].z=B[i].z;
zz=max(zz,B[i].z);
}
for(int i=;i<=n;i++) back[A[i].z]=A[i].x;
memset(s,,sizeof(s));
int mmax=;
for(int i=;i<=n;i++)
{
s[A[i].z]++;
mmax=max(mmax,s[A[i].z]);
}
int len=;
for(int i=;i<=zz;i++) if(s[i]==mmax) id[++len]=back[i];
if(len==zz) printf("-1\n");
else
{
printf("%d\n",len);
for(int i=;i<len;i++) printf("%d ",id[i]);
printf("%d\n",id[len]);
}
}
return ;
}
最新文章
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
- Spring Boot入门实例
- CSS3盒模型display初探(display:box/display:flex)
- Giving Data Backup Option in Oracle Forms 6i
- Sublime Text 转
- Long和Date数据类型之间相互转换代码
- An endpoint configuration section for contract ";serviceReferenc.service"; could not be loaded
- leetcodequestion_56 Merge Intervals
- (转)C#中的委托,匿名方法和Lambda表达式
- JavaScript编程风格--基本的格式化
- 201521123080《Java程序设计》第9周学习总结
- 【HTTP协议】---HTTP协议详解
- 【linux学习笔记之一】linux系统目录结构以及常用系统命令
- luogu P5304 [GXOI/GZOI2019]旅行者
- 在vue.js 中使用animate.css库
- Innodb semi-consistent 简介
- JS 设置盒子div 跳转
- proxool连接sqlerver
- java 解压zip java.lang.IllegalArgumentException: MALFORMED 错误
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)