二分贪心—X
来源:互联网 发布:客户端怎么连接数据库 编辑:程序博客网 时间:2024/06/15 07:26
题目:输入n和m,n代表n次比赛,m代表个人成绩,输出出现次数第二多的所有人。
解题思路:定义一个结构体,结构体包含两个数,一个数表示标号,另一个数表示出现的个数,然后结构体数组进行排列,输出出现个数第二多的数即可。
细节处理:用scanf和printf,用cin和cout会超时。
代码:#include<iostream>
#include <stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct A
{ int num;
int s;
}a[250000];
bool cmp(A a,A b)
{
if(a.s!=b.s)
return a.s>b.s;
else return a.num<b.num;
}
int main()
{ int i,j,n,m,b,h;
while(scanf("%d%d",&n,&m))
{
if(n==0&&m==0)
break;
A a[250000];
memset(a,0,sizeof(a));
for(i=0;i<n;++i)
for(j=0;j<m;++j)
{
scanf("%d",&b);
a[b].num=b;
a[b].s++;
}
sort(a,a+250000,cmp);
for(i=1,h=-1;i<m*n;++i)
{ if(h>a[i].s)
break;
if(a[i].s!=a[0].s)
{ h=a[i].s;
printf("%d ",a[i].num);
}
}
printf("\n");
}
}
感想:写代码的时候要灵活,比如这个题的输入和输出,用scanf和printf可以过,但用cin和cout就不行。
- 二分贪心—X
- 二分贪心 X
- 二分贪心-X
- 二分贪心x
- 二分贪心 X 比赛排名
- ACM-二分贪心X-24
- 二分贪心—B
- 二分贪心—D
- 二分贪心—E
- 二分贪心—T
- 二分贪心—U
- 二分贪心—V
- 二分贪心——B
- 二分贪心——E
- 二分贪心——U
- 二分+贪心
- 贪心 + 二分
- 贪心二分
- ubuntu下安装TL-8323N驱动
- 第五次C++作业
- 浅谈几种组合数的求值
- GDOI2017游记
- 判断网络状态
- 二分贪心—X
- thinkphp 邮箱配置完美测试
- 怎样理解阻塞非阻塞与同步异步的区别?
- 编译提示/usr/bin/ld: skipping incompatible....
- 语音自适应回声消除(AEC)算法
- springMVC的配置与控制器的编写
- Unique Charcters
- How Many Answers Are Wrong HDU
- 设计模式之命令模式