• 【杭电】[5499]SDOI


    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    这题竟然没传……
    好吧~
    从这次周练开始体会到了难度
    体会到了智商不够 -.-
    是时候进入真正的学习记录时期了

    这一题思路是先求出来它实际的积分值

    然后需要输出的题意是

    如果有女生参赛 则至少要有一名女生入选
    如果没有女生参赛 则选最高的m名男生

    需要注意的是
    输出总是按照实际积分排序从大到小

    然后需要注意的是
    值为0时
    有的程序写法会出错

    #include<stdio.h>
    #include<string.h>
    #include <algorithm>
    using namespace std;
    struct ol {
        char name[25];
        char xing[10];
        double r1,r2,m;
    };
    bool vs(ol A,ol B) {
        return A.m>B.m;
    }
    int main() {
        int T;
        int i,j,n,m;
        double q,max;
        struct ol a[100];
        scanf("%d",&T);
        while(T--) {
            scanf("%d %d",&n,&m);
            for(i=0; i<n; i++)
                scanf("%s %s %lf %lf",&a[i].name,&a[i].xing,&a[i].r1,&a[i].r2);
            printf("The member list of Shandong team is as follows:\n");
            if(!m)
                continue;
            for(i=max=0; i<n; i++) {
                if(max<a[i].r1)
                    max=a[i].r1;
            }
            q=300.0/max;
            for(i=0; i<n; i++) {
                a[i].r1*=q;
            }
            for(i=max=0; i<n; i++) {
                if(max<a[i].r2)
                    max=a[i].r2;
            }
            q=300.0/max;
            for(i=0; i<n; i++) {
                a[i].r2*=q;
            }
            for(i=0; i<n; i++) {
                a[i].m=a[i].r1*0.3+a[i].r2*0.7;
            }
            sort(a,a+n,vs);
            for(i=0; i<m; i++) {
                if(!strcmp(a[i].xing,"female"))
                    break;
            }
            if(i<m) {
                for(i=0; i<m; i++)
                    printf("%s\n",a[i].name);
            } else {
                for(i=m; i<n; i++) {
                    if(!strcmp(a[i].xing,"female")) {
                        break;
                    }
                }
                if(i<n) {
                    for(j=0; j<m-1; j++)
                        printf("%s\n",a[j].name);
                    printf("%s\n",a[i].name);
                } else {
                    for(i=0; i<m; i++)
                        printf("%s\n",a[i].name);
                }
            }
        }
        return 0;
    }

    题目地址:【杭电】[5499]SDOI

  • 相关阅读:
    集成学习(一):概述
    机器学习:处理非平衡数据集的办法
    支撑向量机 SVM(一)
    集成学习(五):xgboost 学习总结
    数组的实现(重载[]、=、==、!=运算符重载)
    运算符重载总结
    运算符重载进阶
    运算符重载入门demo
    类模板的简单使用
    static成员变量和static成员函数例程
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12569979.html
Copyright © 2020-2023  润新知