洛谷T136039 蒟蒻代表队(针得不水一下吗QAQ)

自己出的题不会打std祭


题目背景

一年一度的普及组还有几个月就要开赛了,今天金牌教练J把南边机房的蒟蒻们叫在一起,为了维护稼轩荣耀,给曾经碾压这帮人的小学生一个下马威,要派出一支实力强大的代表队参加额...普及组的比赛。

但是这帮人呢,能力有强有弱,NB程度各不相同,说话有多有少,各自有表示违纪能力强弱的BB指数。其中性价比啊不,最精英最优秀最有清北水平的那一位就是队长(NB/BB最高)

现在你是J的秘书,请组织一支纪律(huansan)严明而且总体能力(NB指数)最高的代表队参加比赛。

机房里有n名同学,只要不超过纪律涣散指数,则团队中的成员数量无限制。而且这支战队每个成员的BB指数之和不超过纪律涣散指数,否则金牌教练J就会被在睡梦中刺杀。

现在请你拯救J,挽回稼轩的尊严!

这题不难不要喷

题目描述

改版背包QAQ

输入格式

先输入机房总人数

再输入纪律涣散指数

然后依次输入每个人的姓名(大写的拼音首字母,保证每个人的名字都是三个字的),以及BB指数和NB指数。

输出格式

共输出2行

先输出输出此时整支队伍的最大NB指数

后输出这个团队的队长姓名(队长必须在团队中)

如果不能组成团队则输出

“JYX must be dead!”

输入输出样例

输入 #1
4 10
WPX 2 1
WWX 3 3
XMZ 4 5
GXL 7 9
输出 #1
12
GXL

说明/提示

数据范围

最大纪律涣散指数不超过300

机房里的总人员不超过1000人

(好大一个机房)


嗯没错,这题就是我出的(没想到吧)

很简单对吧居然还有人喷我WDNMD

u1s1这题完全是0/1背包的改版

只是在前面需要处理一组名字外加性价比最高的物品需要在背包中

但是我不会写std

(就你妈离谱)

其实是写出来了然后跟做我旁边的涛哥互卡数据卡到崩溃

//T136039 蒟蒻代表队(针得不水一下吗QAQ)
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 70000
#define IAKIOI 0
using namespace std;
int f[N],w[N],c[N],n,m,fuck;
double maxn=-99999999;
char cap[N];
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        char name[5];
        scanf("%s%d%d",name,&w[i],&c[i]);
        double qwq=(double)c[i]/w[i];
        if(w[i]<=m) fuck=1;
        if(qwq>maxn&&w[i]<m)
        {
            maxn=qwq;
            strcpy(cap,name);
        }
    }
    if(fuck==0)
    {
        printf("JYX must be dead!");
        return IAKIOI;
    }
    for(int i=1;i<=n;i++)
        for(int j=m;j>=w[i];j--)
            f[j]=max(f[j],f[j-w[i]]+c[i]);
    printf("%d
%s",f[m],cap);
    return IAKIOI;
}

完成

完全可以将0/1拿过来用

需要加一波关于队长的特判以及对于姓名的处理

普及-到入门难度

下一次还会有加强版


~End~

(又水了一篇题解)

原文地址:https://www.cnblogs.com/Jiangxingchen/p/13118277.html