*hdu5499
来源:互联网 发布:良心单机手游 知乎 编辑:程序博客网 时间:2024/06/05 00:40
题目连接:点击打开链接
题解:代码运行正确,就是提交一直错误,大家帮忙来找茬
出题人的题解:
直接按照题意计算出最后每名选手的最终得分,接着按最终得分排序。
先找出来一个得分最高的女生,然后找出其余的选手中得分最高的m−1个人,把所有进入省队的选手再按分数重新排一下序,最后输出即可。
其实此题就是题目长了一点,处理起来麻烦了一点,其他都还好
正如上述所说,我们得先求出每个选手的最终得分
首先,我们得先分别找到两场比赛Round1、Round2最高的原始得分Max1、Max2,每位选手最终得分的公式为
0.3*r1*(300/Max1)+0.7*r2*(300/Max2)
求出所有选手的最终得分之后排序处理就可以了
如果有女生参加,m个人中就需至少包括得分最高的女生,否则输出得分最高的前m个人
代码:
#include <iostream>#include <cstring>#include <cmath>#include <cstdio>#include <algorithm>using namespace std;struct people{ char sex[10]; char name[20]; double r1,r2,num;};struct people p[100];int cmp(people q,people w){ return q.num<w.num;}int main(){ int t,n,m,ans,k; int nan,nv; double sum1,sum2; cin>>t; while(t--) { sum1=-1; sum2=-1; ans=0; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>p[i].name>>p[i].sex>>p[i].r1>>p[i].r2; if(strcmp(p[i].sex,"male")==0) nan++; else nv++; sum1=max(p[i].r1,sum1); sum2=max(p[i].r2,sum2); } for(int i=1;i<=n;i++) { p[i].num=p[i].r1*(300.0/sum1)*0.3+p[i].r2*(300.0/sum2)*0.7; } sort(p+1,p+1+n,cmp); for(int i=n;i>=n-m+1;i--) { if(strcmp(p[i].sex,"female")==0) { ans++; break; } } if(ans==1||nv==0) { printf("The member list of Shandong team is as follows:\n"); for(int i=n,j=1;j<=m;j++,i--) { cout<<p[i].name<<endl; } continue; } for(int i=n;i>=1;i--) { if(strcmp(p[i].sex,"female")==0) { k=i; break; } } printf("The member list of Shandong team is as follows:\n"); for(int i=n;i>=n-m+2;i--) { cout<<p[i].name<<endl; } cout<<p[k].name<<endl; } return 0;}
0 0
- *hdu5499
- hdu5499 SDOI
- BestCoder Round #59 (div.2) HDU5499 SDOI 排序+贪心
- 《leetCode》:Divide Two Integers
- OS Diary Day 1 console.c
- nyoj 106 背包问题 【背包问题】【贪心】
- 移动标签(marquee)属性详解
- Introduction to Algorithm - Summary of Chapter 1 - The Role of Algorithm in Computing
- *hdu5499
- Redis五大数据之有序集合
- Android快速SDK(9)下载库DownLoad【傻瓜模式】
- 让EditText不能自动获取焦点
- MySQL 源码编译安装报错 Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
- HDU 1276 士兵队列训练问题 标记
- CUDA Cuts: Fast Graph Cuts on the GPU
- Java WebService 简单实例
- sicily 10570 VOLIM