BCRound #59 (div.2)

网友投稿 212 2022-09-16

BCRound #59 (div.2)

SDOI

问题描述

一年一度的全国信息学奥林匹克竞赛(NOI)即将举办,SD省组织进行了一次省队选拔,一共有 n (n \leq 100)n(n≤100)名选手参加了这次省队选拔。今年,SD省的省队名额为 m (m \leq 50)m(m≤50) 人,即,今年的SD省队有 mm 名队员。按照惯例,SD省的省队选拔有两轮比赛,依次为“Round1”和“Round2”,每个Round的满分为 300300 分。所有 n 名选手都参加了Round1和Round2,现在每名选手Round1和Round2的“原始得分”已经确定。SD省的省队选拔采用标准分计算方式,即,设某个Round的最高原始得分为 xx 分(保证每轮比赛都不会全场零分,即x>0x>0),那么此Round每名选手的“相对得分”为: 这名选手此Round的原始得分* (300 / x)∗(300/x)。所有选手的Round1和Round2的相对得分计算完毕后,将计算每名选手的“最终成绩”。一名选手的最终成绩为:这名选手的Round1相对得分* 0.3∗0.3 + 这名选手的Round2相对得分* 0.7∗0.7。非常和谐的是,保证不存在两名选手的最终成绩相等。所有选手的最终成绩计算完毕后,将会按照以下规则选出省队队员:为了鼓励女生参加信息学奥赛及相关活动,在有女选手参加省队选拔的情况下,省队中有一个固定的女选手名额。1)若没有女选手参加省队选拔,则最终成绩最高的 mm 位选手进入省队。2)若有女选手参加省队选拔,则最佳女选手(女选手中最终成绩最高者)进入省队,其余的选手(男选手和最佳女选手之外的女选手)中成绩最高的 m-1m−1

输入描述

第一行为一个整数 T(T \leq 100)T(T≤100),表示数据组数。接下来有TT组数据。对于每组数据,第一行有两个正整数 nn 和 m (n \geq m)m(n≥m),分别表示参加省队选拔的选手人数和省队的名额数。接下来有 nn

输出描述

对于每组数据,先输出一行"The member list of Shandong team is as follows:"(不带引号),接下来输出mm行,每行为一名省队队员的姓名,按省队队员的最终成绩降序(从高到低)排列。

输入样例

2 10 8 dxy male 230 225 davidwang male 218 235 evensgn male 150 175 tpkuangmo female 34 21 guncuye male 5 15 faebdc male 245 250 lavender female 220 216 qmqmqm male 250 245 davidlee male 240 160 dxymeizi female 205 190 2 1 dxy male 300 300 dxymeizi female 0 0

输出样例

The member list of Shandong team is as follows: faebdc qmqmqm davidwang dxy lavender dxymeizi davidlee evensgn The member list of Shandong team is as follows: dxymeizi

Hint

第一组数据:第一轮最高分为250250,所以每个人的成绩都要乘(300/250)=1.2(300/250)=1.2,第二轮最高分也为250250,每个人的成绩也要乘1.21.2。每个人的最终成绩按降序排如下faebdc 298.20qmqmqm 295.80davidwang 275.88dxy 271.80lavender 260.64dxymeizi 233.40davidlee 220.80evensgn 201.00tpkuangmo 29.88guncuye 14.40有女选手参加,最佳女选手lavender进入省队,其他分最高的77人按名次排列进入省队#include#include#include#include#include#includeusing namespace std;struct p{ string name; int s1,s2; double c; bool operator < (const p&rhs) const { return c > rhs.c; }}a[100],b[100],C[100],D[100];int main(){// printf("%lf\n",220*1.2*0.3+216*1.2*0.7); int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d%d",&n,&m); int k=0,l=0; string sname,xing; int Max1=0,Max2=0; for(int i=1;i<=n;i++){ cin>>sname; cin>>xing; if(xing[0]=='m'){ a[k].name=sname; scanf("%d%d",&a[k].s1,&a[k].s2); Max1=max(Max1,a[k].s1); Max2=max(Max2,a[k].s2); k++; }else { b[l].name=sname; scanf("%d%d",&b[l].s1,&b[l].s2); Max1=max(Max1,b[l].s1); Max2=max(Max2,b[l].s2); l++; } } //cout< flag; int z=0; for(int i=0;i15n>15的数据不超过1010组 #include #include #include #include using namespace std;#define ll long longint T, n, a[30];int main(){ scanf("%d", &T); while(T--){ scanf("%d", &n); for(int i = 1; i <= n; i++){ scanf("%d", a + i); } int ans = n; for(int i = n; i >= 1; i--){ if (a[i] == ans) ans--; } printf("%d\n", ans); } return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HDU 1507 Uncle Tom's Inherited Land*(二分匹配,输出任意一组解)
下一篇:企业做好私域流量的5个底层逻辑!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~