网易雷火笔试

- 礼物
  - 从前两年开始送礼物
  - 第 1,3,6,10 年有纪念物
  - 今年送礼物外,送之前应该有但是没送过的礼物
- 复制粘贴操作
  - 有全选,选一个,复制,粘贴操作 
  - 一次复制后可以进行多次粘贴 一
  - 开始有1个A 最后需要有N个A
  - 如何操作,使得操作数最少
- 广告游戏
  - 第二个题目 广告游戏 输入为初始战斗力 p,怪物数量 n ,  boss战斗力
  - 然后依次输入n个怪物,每个怪物的战斗力,都是升序排列 
  - 只有战斗力大于boss或怪物战斗力才能挑战(所有战斗力均为整数) 
  - 挑战怪物成功,获得怪物对应战斗力,每个怪物挑战完一次之后不能再被挑战 
  - 或者可以在任意时刻选择自我战斗力 *1.1(向下取整) 
  - 至少需要经过多少次战斗力提升之后能够打败boss
- 永劫无间
  - 有毒圈
    - [0, 0] - [30, 30]
    - 每次刷圈向内 1 个单位
    - 累计到 2 
  - 第一次倒有花
  - 每次操作输出当前存活人数和队伍
  - 操作:
    - KO
    - UP
    - RESPAWN
    - MOVE
    - SHRINK
    - QUIT

第一题 A 了

第二题看了一下是 DP,但是感觉思路有点不不清晰,需要想很久,就先去做后面两道

第三题 思路挺清晰的,二分查找找到能打的最厉害的怪,然后判断是打怪还是自我提升
第一次写没有注意打了之后不能再打,两个样例只有一个是对的,但是提交上去通过了50%+
后面发现每次打了一个怪物之后不能再打,加入一个数组判断是否已经打过,感觉逻辑对了,两个样例也对了,结果通过数反倒变成6%了
甚至开始怀疑是不是用例给错了

第四题
每种情况一个一个写,只写了 KO 和 Exit(也写了一个小时左右),通过了30%左右
不过感觉题目逻辑有点问题啊,有花的时候被杀不是幽灵状态吗,这个时候虽然存活数应该减少,但是应该不能叫fall吧,应该只有没花的时候被杀才是fall啊
全部评论
hello,请问你是春招还是实习呀
1 回复 分享
发布于 03-30 20:55 上海
顺便附上第三题代码,我感觉思路和答案都是对的啊,看看有没有大佬指导一下 (每次二分查找之后其实可以更新left的,但是懒得优化) int binarySearch(int n, const vector<int>&amp; mosters) { int l = -1; int r = mosters.size(); while (l + 1< r) { int m = (r - l) / 2 + l; if (mosters[m] < n) { l = m; } else { r = m; } } return l; } int main() { int p, n, m; cin >> p >> n >> m; vector<int> mosters(n); vector<bool> killed(n, 0); vector<int> bosses(m); for (int i = 0; i < n; i++) { cin >> mosters[i]; } for (int i = 0; i < m; i++) { cin >> bosses[i]; } for (auto boss : bosses) { int curP = p; int left = -1; int right = mosters.size(); int time = 0; while (curP <= boss) { time++; int mosterId = binarySearch(curP, mosters); while (mosterId != -1 &amp;&amp; killed[mosterId]) { mosterId--; } if (mosterId <= -1 || mosters[mosterId] < 0.1 * curP) // 都打不过或者不如 * 1.1 { curP *= 1.1; } else { curP += mosters[mosterId]; killed[mosterId] = true; } cout << time << " " << curP << endl; } cout << time << endl; } }
点赞 回复 分享
发布于 03-30 20:13 四川
第一题没看懂啊佬
点赞 回复 分享
发布于 04-24 09:38 吉林

相关推荐

10-07 21:36
门头沟学院 Java
点赞 评论 收藏
分享
4 14 评论
分享
牛客网
牛客企业服务