A-大吉大利,今晚吃鸡——枪械篇


题目描述

在绝地求生(吃鸡)游戏里,不同的枪支有不同的威力,更是可以搭配不同的配件,以提升枪支的性能。

每一把枪都有其威力及其可装备配件种类。每一个配件有其所属种类,可以为枪支提供威力的百分比加成。

每一把枪只能装备一个同类配件。给你n把枪支和m个配件,枪的威力为p,可装备的配件数量为k,

为k个不同类型的配件,同种类配件只可以装备一个。配件种类用数字q表示,配件威力加成用一个小数b表示。

请你挑选一把枪并为其搭配配件使其威力最大。假设一把枪的威力是p,装配的k个配件的威力加成是bi,那么枪最后的威力w=p*(1+b1+b2+…+bk)。

输入描述:

数据有多组,处理到文件结束。
第一行两个整数n和m,代表枪支数量和配件数量。
接下来n行,描述n把枪的属性:第一个整数为p,代表枪支的威力;第二个整数为k,代表该枪支可装备的配件数量;
后面k个整数,代表可装备配件的种类。
接下来m行,描述m个配件的属性:第一个整数为q,代表配件的种类,第二个浮点数为b,代表配件可以为枪支提供的威力加成。

输出描述:

每组数据输出为一行,输出一个浮点数,代表合理装备配件后的枪支最大威力。精确到小数点后4位。
*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_
以上为题意(你们可能会想,这个人不是很懒吗,他怎么可能会贴原题?!
好吧,这其实是我CtrlCCtrlV的enmmm。
算了,我还是贴给网址吧/*哭笑*/https://www.nowcoder.com/acm/contest/67/A
【思路分析】:没有思路。我心只有一条路:模拟+暴力。
挨个遍历一下,再贪心一下。
咳咳,对不起,我又要贴代码了。
 
 
#include <bits/stdc++.h>
using namespace std;
struct gun{
    int p;
    int k;
    int kind[1010];
};
gun g[1010];
double pei[1010];
int main(){
    int n, m;
    while (scanf("%d%d", &n, &m) != EOF){
        //memset(g, sizeof(g), 0);
        //memset(pei, sizeof(pei), 0.0);
        /*for(int i = 0; i < 1010; i ++){
            g[i].p = 0;
            g[i].k = 0;
            for (int j = 0; j < 1010; j ++)
                g[i].kind[j] = 0;
            pei[i] = 0.0;
        }*/
        //如上可得出经验:尽量不要用memset函数,初始化自己写,恩。
        for (int i = 0; i < 1010; i ++)
            pei[i] = 0;
        for (int i = 0; i < n; i ++){
            scanf("%d", &g[i].p);
            scanf("%d", &g[i].k);
            for (int j = 0; j < g[i].k; j ++)
                scanf("%d", &g[i].kind[j]);
        }
        for (int i = 0; i < m; i ++){
            int q;
            double b;
            scanf("%d", &q);
            scanf("%lf", &b);
            if(pei[q] < b){
                pei[q] = b;
            }
        }
        double maxn = 0;
        for (int i = 0; i < n; i ++){
            double temp = 1;
            for (int j = 0; j < g[i].k; j ++){
                temp += pei[g[i].kind[j]];
            }
            if (g[i].p * temp > maxn)
                maxn = g[i].p* temp;
        }
        printf("%.4lf\n", maxn);
    }
    return 0;
}


挨千刀的,被memset坑了一发,简直入魂~所以说,初始化这种小事还是自己处理吧,尽量不要麻烦C++大人的函数库了。
今天,突然想起北岛的一句话:“你没有如期归来,而这正是离开的意义。”
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值