2022年3月19日京东java实习机试编程题

2022年3月19日京东机试编程题

第一题

攻城战

时间限制: 1000MS内存限制: 65536KB

题目描述:

小七正在玩一款名为“攻城战”的策略游戏。现在,小七正在率领自己的军队攻打一座城池。通过一段时间的游玩,小七的军队目前有a辆坦克。而“攻防战”是一个回合制游戏,一个回合如下:

1.小七的军队中的每辆坦克攻击所选择的一座碉堡,这座碉堡损失一点生命值。当一座碉堡失去所有生命值时,它就被摧毁了。小七可以为每辆坦克独立选择碉堡。

2.小七的对手进攻。炸毁k*c辆坦克,其中:k是剩余的碉堡的数量,每个碉堡可以炸毁c辆坦克。

通过侦察兵,小七探明了敌情:战场上有d座敌方碉堡,每一座碉堡都有b点生命值。摧毁所有的碉堡后,小七就攻下了这座城池(即使小七没有坦克了,也算攻下了这座城池)。反之如果小七没有坦克了,敌方还有碉堡,小七就失败了。现在小七想提前知道自己能否获胜,你能帮帮小七吗?

输入描述:

一行四个空格隔开的整数a,b,c,d,其中1<=a<=1000000, 1<=b,c,d<=10000

输出描述

输出一个数,如果小七可以获胜,输出所需的最小回合数。否则输出-1。

  • 样例输入

    10 6 8 2
  • 样例输出

    2

我的代码:

```cpp
#include <iostream>
using namespace std;

int main()
{

    int a, b, c, d; // a代表目前有a辆坦克,b代表每一座碉堡都有b点生命值,c代表对手进攻炸毁k*c辆坦克(k是剩余的碉堡数量),d代表战场上有d座敌方碉堡
    /*
    input:10 6 8 2  一共碉堡有2*6=12滴血 坦克有10辆
    output:2
    */
    cin >> a >> b >> c >> d;
    int circle = 0;
    int blood = b * d;
    int tank = a;
    while (tank > 0 && blood > 0)
    {
        circle++;
        blood -= tank;
        d = blood / b + 1;
        tank -= c * d;
    }
    if (blood > 0)
    {
        cout << -1;
    }
    else
    {
        cout << circle;
    }
    return 0;
}
```

第二题

建造规划

时间限制: 1000MS 内存限制: 65536KB

题目描述:

小明在玩一款建造类的游戏。他需要为一段未开荒的地段设计路段的规划,以便起重机通过。

游戏里每段路径都有能承重的级别,小明现在希望尽可能让能承重更大的起重机通过,这样他就可以比较快地完成建造了。

游戏规定小明只能选一种起重机机型,小明想知道这个起重机最高的承重级别应该是多少,使得在该承重条件下,起重机可以从任何一个点出发去向任何一个点而不会损坏道路(损坏道路指的是路段上行驶了超过承重能力的起重机)。

为了方便,我们将需要规划的建造点抽象成N个点,有M条边将他们相连。

输入描述

第一行是两个空格隔开的正整数n,m。n代表点数,我们将点从1到n编号,m指边的数量。接下来m行,每行3个空格隔开的正整数u, v, p,代表节点u和节点v之间有一条承重能力为p的路径。

输出描述

一行,一个正整数,表示起重机的最重承重级别。

  • 样例输入
3 3
1 2 3
1 3 4
2 3 5
  • 样例输出
4

提示:

样例解释:重量为5时,从点1到点3无法完成(超出了最大承重),而重量为4时可以任意两点间达到。因此最重可以是4。

我的代码:

#include <iostream>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

struct Paths
{
    int from;
    int go;
    int weight;
};

bool cmp(Paths p1, Paths p2)
{
    return p1.weight > p2.weight;
}

int main()
{
    int n, m;
    cin >> n >> m;
    vector<Paths> all(m);
    map<int, int> maps;
    for (int i = 1; i <= n; i++)
    {
        maps[i] = 0;
    }
    for (int i = 0; i < m; i++)
    {
        cin >> all[i].from >> all[i].go >> all[i].weight;
        if (maps[all[i].from] < all[i].weight)
        {
            maps[all[i].from] = all[i].weight;
        }
        if (maps[all[i].go] < all[i].weight)
        {
            maps[all[i].go] = all[i].weight;
        }
    }

    int min = INT_MAX;

    for (auto &i : maps)
    {
        if (i.second < min)
            min = i.second;
    }

    cout << min << endl;

    return 0;
}
#2023届实习##京东##实习##java工程师##笔经#
全部评论
老哥,问下面Java岗位是必须用Java写还是可以用c++
点赞 回复 分享
发布于 2022-08-06 20:44
收藏了,希望可以用到
点赞 回复 分享
发布于 2022-03-22 16:43

相关推荐

活泼的代码渣渣在泡池...:哈哈哈挺好的,我也上岸美团了,不说了,我又接了一单
点赞 评论 收藏
分享
11-07 03:09
深圳大学 C++
实习秋招做的很差,也想总结一下自己的大学生涯吧。不算太摆,但是很迷。0.大学前高考发挥超常,才来到深大计软。大学前暑期基本上都是玩游戏了。接触了python(李笑来)但是没接触到online&nbsp;judge,也没去多了解编程生态、计算机行业。背了背单词,但是没去规划指标如六级,没制定计划不了了之。1.大一军训时去了校ACM培训,当时dev编译器都不会下载。军训期间积极看B站大学c语言课程。力扣,牛客都是知道的,但是没有成为很好的跳板。第二次培训,看不懂cpp的&nbsp;cin&amp;gt;&amp;gt;,网上搜了也没搞懂,再加上周末跟训得三个多小时,感觉跟不上放弃了。自费报了蓝桥杯,混了省二跟着一些机构课程学习,走的cpp路线。暑假在linux上熟悉vim操作。2.大二朝花夕拾,又去参加ACM训练,跟了一年,寒假都在码&nbsp;带懒标记的线段树。codeforce和力扣赛都在打打(竞赛还是有趣的)。集训队入队周赛打四场,校赛拿金,面试时表现差,说自己想就业,遂挂。当时四月多,2024华为软件精英挑战赛也在打,拿了80名(前64才有三等奖)。蓝桥杯国二。很多晚上跑步来消磨时间。3.大三上修了深大最强的计算机图形学,408找实习,投简历了说自己只有周末有空,遂没在找。也没看牛客真实行情。寒假随便做了个日志器,属于混过去了。当时接到字节的面试(人生处女面),前一天觉都睡不好,很紧张,手撕做的不好,话都说不利索了。面评脏。大三下找实习,cpp选手,没有很好经历、项目,运气好去了学校附近中厂实习。4.大四现在,貌似对开发不上心?没有好的offer(甚至hot100不会做)其实同届好多同学都拿的不错。还有保研C9的。嗯,考研吧。————对自己行为的分析:a.应试教育+应试家庭教育,我的个性是固执、遵规守矩的。b.还有莫名的孤独,明明有很多朋友,但还是没有很好的内驱力,没有坚定的理想。c.自己没有很好的调研、探索和规划能力。大家也可以锐评一下😊
_Matrice_:差不多的性格,不然不会本科时硬杠cpp(那个时候还没有大模型,啃完一整本primer和习题,还是做不出来什么东西),还找不到方向,相比之下学习一些应用层的同学已经能够参考别人的方法做出实用的应用了。学东西,找实习,感觉更多地是出于和别人比较,而不是自我内驱。不过...正如deft所说,人生不需要他人的建议,所以也没有标准化的路径,在能够自食其力的背景下慢慢找到自己的生活方式吧...。另外面试很多时候看运气、眼缘
点赞 评论 收藏
分享
评论
6
11
分享

创作者周榜

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