前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2018年全国多校算法寒假训练营练习比赛(第一场)大吉大利,今晚吃鸡——枪械篇

2018年全国多校算法寒假训练营练习比赛(第一场)大吉大利,今晚吃鸡——枪械篇

作者头像
mathor
发布2018-07-24 15:34:47
2990
发布2018-07-24 15:34:47
举报
文章被收录于专栏:mathor
题目链接:大吉大利,今晚吃鸡——枪械篇
image
image

 说实话,一开始看到这个题,还以为是动态规划,后来想了一下好像并不存在什么子问题,就是单纯要求个最大值而已,枪的威力由强本身的威力加上配件的加成,那么配件加成就显得尤为重要,我在代码中有一步处理,对于同种的配件,如果一个加成比另一个的大,那就用大的覆盖掉小的,小的根本就不用管了

代码语言:javascript
复制
import java.util.Scanner;
class gun {
    public int p;//枪支威力
    public int k;//枪支可装配的配件数量
    public int[] kind = new int[1002];//可装配配件的种类
}
public class Main {
    static gun[] g = new gun[1002];//声明对象数组
    public static Double[] pei = new Double[1002];
    public static void main(String[] args) {
        int n,m;
        Scanner cin = new Scanner(System.in);
        while(cin.hasNext()) {
            n = cin.nextInt();
            m = cin.nextInt();
            //实例化对象数组,不然不能用
            for(int i = 0;i < 1002;i++) {
                g[i] = new gun();
            }
            for(int i = 0;i < 1002;i++)
                pei[i] = 0.0;
            //输入枪的信息
            for(int i = 0;i < n;i++) {
                g[i].p = cin.nextInt();
                g[i].k = cin.nextInt();
                for(int j = 0;j < g[i].k;j++)
                    g[i].kind[j] = cin.nextInt();
            }
            //输入配件的信息
            for(int i = 0;i < m;i++) {
                int q = cin.nextInt();
                Double b = cin.nextDouble();
                if(pei[q] < b)
                    pei[q] = b;
            }
            //计算最大威力
            Double max = 0.0;
            for(int i = 0;i < n;i++) {
                Double tmp = 1.0;
                for(int j = 0;j < g[i].k;j++)
                    tmp += pei[g[i].kind[j]];
                if(g[i].p * tmp > max)
                    max = g[i].p * tmp;
            }
            System.out.printf("%.4f\n",max);
        }
    }
}

 这里定义的对象数组类似于c/c++中的结构体,将枪的信息包装起来,一开始无论怎么运行都会报错,查了原因才发现我没有18~20行的实例化对象数组,因为这个东西我用的也少,所以没有注意到,为了确保计算的精准,我用的都是double的包装类,基本浮点数据类型是无法保存一个确定的浮点数的,只能近似,但是用Double包装类就可以

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目链接:大吉大利,今晚吃鸡——枪械篇
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档