分配PGA奖金的问题,题目不难,但是细节比较坑。
要注意数据的读入,排名带T的条件,奖金精度的控制等很多细节。

#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn=145;
int n,pos;
double sum,pri[maxn];
struct player{char name[25];double prize;bool amateur,t;int sc[4],pre,tot,dq,rk;
} p[maxn];
bool cmp1(const player &a,const player &b){if(a.dq>-3&&b.dq>-3) return a.pre<b.pre;return a.dq>b.dq;
}
bool cmp2(const player &a,const player &b){if(a.dq!=b.dq) return a.dq>b.dq;if(a.tot!=b.tot) return a.tot<b.tot;return strcmp(a.name,b.name)<0;
}
void init(){memset(p,0,sizeof(p));scanf("%lf",&sum);for(int i=0;i<70;++i){scanf("%lf",&pri[i]);pri[i]=pri[i]/100.0*sum;}scanf("%d\n",&n);char s[40];for(int i=0;i<n;++i){fgets(p[i].name,20,stdin);if(strchr(p[i].name,'*')) p[i].amateur=true;for(int j=0;j<4;++j){if(!scanf("%d",&p[i].sc[j])){p[i].dq=j-4;break;}if(j<2) p[i].pre+=p[i].sc[j];p[i].tot+=p[i].sc[j];}fgets(s,40,stdin);}return;
}
void solve(){sort(p,p+n,cmp1);pos=0;while(pos<min(n,70)&&p[pos].dq>-3) ++pos;while(p[pos].dq>-3&&p[pos].pre==p[pos-1].pre) ++pos;sort(p,p+pos,cmp2);int k=0,rk=0,prk=0;while(k<pos){if(p[k].dq) break;int sta=k,prerk=rk+1,cnt=0;bool x=false;double sum=0;while(!p[sta].dq&&p[k].tot==p[sta].tot){if(!p[sta].amateur) sum+=pri[prk+cnt++],x=true;++rk,++sta;}sum/=cnt;for(int i=k;i<=sta;++i){p[i].rk=prerk;if(prk>69) p[i].amateur=true,p[i].t=false;if(!p[i].amateur) p[i].prize=sum,p[i].t=cnt>1;}k=sta-1,k++;prk+=cnt;}
}
void print_ans(){printf("Player Name          Place     RD1  RD2  RD3  RD4  TOTAL     Money Won\n");printf("-----------------------------------------------------------------------\n");for(int i=0;i<pos;++i){printf("%-21s",p[i].name);if(p[i].dq) printf("          ");else{char t[5];sprintf(t,"%d%c",p[i].rk,p[i].t?'T':' ');printf("%-10s",t);}for(int j=-4;j<p[i].dq;++j) printf("%-5d",p[i].sc[4+j]);for(int j=p[i].dq;j<0;++j) printf("     ");if(p[i].dq) printf("%s","DQ");else if(!p[i].amateur) printf("%-10d",p[i].tot);else printf("%d",p[i].tot);if(p[i].dq||p[i].amateur){printf("\n");continue;}printf("$%9.2lf\n",p[i].prize);}
}
int main(){int t;scanf("%d",&t);while(t--){init();solve();print_ans();if(t) printf("\n");}return 0;
}

UVa 207 - PGA Tour Prize Money(模拟)相关推荐

  1. UVa 207 - PGA Tour Prize Money

    时间限制:3.000秒 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&catego ...

  2. UVA 207 PGA Tour Prize Money

    题目链接:https://vjudge.net/problem/UVA-207 题目翻译摘自<算法禁赛入门经典> 题目大意 你的任务是为PGA(美国职业高尔夫球协会)巡回赛计算奖金.巡回赛 ...

  3. UVA - 207 PGA Tour Prize Money

    /*法一:代码借鉴修改自blog:http://blog.csdn.net/aozil_yang/article/details/50543965这个博客把思路和注意的地方说得很详细了,建议一看收获: ...

  4. 例题5-10 UVA 207 PGA Tour Prize Money PGA巡回赛的奖金

    这个题真是快把自己折磨疯了,在学校因为要复习,折腾了10天才AC,结果电脑出了点问题代码数据全部丢失,放假后又写了一遍,结果不断RE一天,唉! 这个题的题意就不说了,紫书上说的很详细了,关键是一点,什 ...

  5. 207:PGA Tour Prize Money

    PGA Tour Prize Money 这道题太麻烦了,先放这儿,日后再说... #include<cstdio> #include<cstring> #include< ...

  6. PGA Tour PRize Money(Uva 207)

    //生无可恋,看的别人的代码,有时间理解,20ms <code class="hljs cpp has-numbering"><span class=" ...

  7. Uva207 PGA Tour Prize Money

    题目我就不放了,这是一道和师兄帮帮忙 同等恶心的难题... 首先udebug的数据是有问题的,不符合题目描述.当然我们可以修改写法使得udebug的数据能够过. 然后,udebug的数据不全,有几个重 ...

  8. 例题5-10 PGA巡回赛的奖金(PGA Tour Prize Money,ACM/ICPC World Finals 1990 UVa207)

    原题链接:https://vjudge.net/problem/UVA-207 分类:耐力 备注:排序和其他细节处理 前言:这是我第二次默写刘老师的代码了,真的崩溃,错一点点细节都不行,对着uDebu ...

  9. 例题5-10 UVa207-PGA Tour Prize Money(WA)

    这道题真的是搞心态的神仙题了,由于到最后还是晕晕乎乎+WA,所以就不多说了,直接贴代码. 题目链接:UVa 207 WA代码: #include <iostream> #include & ...

最新文章

  1. 正则表达式中空格的危害
  2. 配置Nginx实现负载均衡
  3. 修改oracle数据连接数据库,修改Oracle数据库的连接数
  4. python 占位符_5分钟让你用Python作出最精美的Powerpoint
  5. 以前的某个程序安装计算机上创建挂起_教研拓进王立辉老师计算机专业教学心得...
  6. 【转】用BlazeMeter录制JMeter测试脚本
  7. 我搜集的C++字符类型的相互转换
  8. IMPDP导入实例(oracle)
  9. 在maven项目中打开jsp_零基础在intellij中打开一个项目复制粘贴内容即可运行的java拼图...
  10. python开发转行做数据分析_转行学IT,Java、Python、大数据选择学哪个发展好?
  11. 国产自主可控的形式化验证代码自动生成工具ModelCoder可替代Matlab/Sumlink
  12. 2021.10.26 Node.js笔记
  13. Python JSONPath示例
  14. FreeSWITCH mod_callcenter 整理
  15. python机器学习算法.mobi_推荐《scikit-learn机器学习常用算法原理及编程实战》PDF版+epub版+源代码...
  16. SPSS基础教程:认识SPSS的主要窗口
  17. 普适计算-2014/03/14
  18. python高德地图api调用实例_Python调用高德地图API实现经纬度换算、地图可视化
  19. 这是关于物理学的最强科普
  20. 阿里云盘内测申请_阿里云网盘公测预约开始了,现在申请还送2个T的空间!

热门文章

  1. keepalive和keep-alive
  2. BugMeNot:查找和共享登录名(一个神奇的网站)
  3. 科研级试剂材料磷脂聚乙二醇马来酰亚胺 DSPE-PEG-MAL----为华生物
  4. 【转】激励循环——加密算法如何实际修复现有激励循环
  5. Emgucv使用中常用函数总结
  6. 超级玛丽3号max即将停售70版本,到底保障如何,值不值得购买呢
  7. html爆炸效果,HTML5 SVG炫酷文字爆炸特效
  8. Go学习——使用MongoDB
  9. c语言提供了三种预处理命令,C语言提供的三种预处理命令
  10. 区别wchar_t,char,WCHAR