HDU 5499/BC 59A SDOI

本文提供了一个竞赛编程的例子,包括输入输出格式、结构体定义及排序方法。通过计算参赛者的得分并进行排序,输出指定数量的优胜者名单,并确保至少有一名女性参赛者上榜。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先按照题中所给的公式,计算出每个人的分数,结构体排序,之后先输出排名前m-1个队员,如果已经输出了女队员或者没有女队员参加,那么直接输出排第m的队员即可。否则找到剩下队员中排名最好的女队员

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<algorithm>
#include<set>
#define scnaf scanf
#define cahr char
#define bug puts("bugbugbug");
using namespace std;
typedef long long ll;
const int maxn=1e5+15;
struct T
{
    char name[30],sex[30];
    int r1,r2;
    double v;
    bool operator <(const T &b) const{
        return v>b.v;
    }
} a[105];
int main()
{
    int T_T;
    scnaf("%d",&T_T);
    while(T_T--)
    {
        int n,m;
        scanf("%d%d",&n,&m);
        int maxr1=0,maxr2=0;
        int flag=0;
        for(int i=0; i<n; i++)
        {
            scanf("%s%s%d%d",a[i].name,a[i].sex,&a[i].r1,&a[i].r2);
            maxr1=max(maxr1,a[i].r1);
            maxr2=max(maxr2,a[i].r2);
            if(a[i].sex[0]=='f') flag=1;
        }
        for(int i=0; i<n; i++)
            a[i].v=0.3*a[i].r1*300/maxr1+0.7*a[i].r2*300/maxr2;
        sort(a,a+n);
        printf("The member list of Shandong team is as follows:\n");
        for(int i=0; i<m-1; i++)
        {
            printf("%s\n",a[i].name);
            if(a[i].sex[0]=='f') flag=0;
        }
        if(flag)
        {
            for(int i=m-1; i<n; i++)
                if(a[i].sex[0]=='f')
                {
                    printf("%s\n",a[i].name);
                    break;
                }
        }
        else printf("%s\n",a[m-1].name);

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值