NC568 题解 | #牛牛的导弹系统#

牛牛的导弹系统

http://www.nowcoder.com/practice/0105ceb444b64354bed664f816125436

题意分析

  • 需要在每一天至少发射M枚炮弹。
  • 在进行交接的时候必须至少有一个系统可以正常发射。
  • 每个系统发射的时间为A天,冷却的时间为B天。
  • 问至少需要部署多少个导弹系统可以保证符合上述要求。

    思路分析

  • 首先,我们发现可以把A+B看作是一个周期,因为这个周期过后之前冷却的有可以继续使用了,相当于进入了下一个新的周期。
  • 然后,我们对A和B的情况进行分类
    • A<B
    • A=B
    • A>B

写法一

  • 经过上面的分析,我们的问题就迎刃而解了。

  • 代码如下

    • 直接得到答案,时间复杂度为O(1)
    • 没有开多余的空间,空间复杂度为O(1)
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param A int整型 可以连续发射A天
     * @param B int整型 需要连续冷却B天
     * @param M int整型 每天至少需要发射M粒导弹
     * @return int整型
     */
    int solve(int A, int B, int M) {
        // write code here
        if(A==B){
            return 3*M;
        }else if(A>B){
            return M*2;
        }else{
            int tmp=(B/A);
            return M+(tmp+1)*M;
        }
    }
};

写法二

  • 我们继续对第一种写法进行分析。我们发现,其实分析A<B的情况的时候我们就可以得到所有的情况。根据A<B的分析方法具有普遍性。所以我们可以一个公式表示最后的结果

  • 代码如下

    • 直接计算公式,时间复杂度为
    • 基本没有开多余空间,空间复杂度为
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param A int整型 可以连续发射A天
     * @param B int整型 需要连续冷却B天
     * @param M int整型 每天至少需要发射M粒导弹
     * @return int整型
     */
    int solve(int A, int B, int M) {
        // write code here
        return (B/A+2)*M;
    }
};
全部评论

相关推荐

08-08 16:33
唐山学院 Java
职场水母:首先,简历太长,对于实习和应届找工作,hr一眼扫的是学历,技术看实习,你写的技术栈字太多了,尽量用一句话概括不用写那么详细,技术面的时候会问的,而且技术栈都会在实习或者项目里体现,你要做的是,把你的简历浓缩为一页,删除没用的东西,比如实践经历,自我评价,这些纯废话,没用,专业技能写的太离谱,你真的熟练掌握了吗,建议都写熟悉,找工作和写论文不一样,追求的是干练和实用,把实习经历和项目提前,把掌握的技术栈写到最后,然后去找实习,
点赞 评论 收藏
分享
牛客83265014...:完了,连现在都没开始面,13号投的是不是晚了
秋招的第一个offer,...
点赞 评论 收藏
分享
09-16 15:32
已编辑
苏州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务