【题解】牛客小白月赛44&大家错的比较多的地方

大家补题的时候如果一直 WA 可以看看你是否踩中了下面的一些坑。

Problem A

条件一必须选“极长”段;条件二是 最大而非 最大;

2 1 1 这种数据应当输出 1 1 2 3 而非 2 3,理由如上。

注意每组数据都需要一次换行,但是单组数据内部不需要换行。

Problem B

萝卜保护伞可以保护自己,虽然出题人认为可能是常识,但或许确实难倒了一些真的没玩过 pvz 的同学。

Problem C

题意:先用 RMB 并用光;再用红点并用光;再用绿点并用光。

直接开 double 模拟的同学可能有少数不优美的写法无法通过本题,昨天找了某位同学的一个朴素写法大家可以参考一下(好像没用另外一位哥哥说的什么奇技淫巧)

double op(int n, double m){
  double ans = 0;
  while (n > 0) {
    ans += n * 10 + min(1000.0, (n*10*(m-1)));
    n /= 2;
  }
  return ans;
}

既然这样我想应该就不必再纠结所谓“卡精度”的问题了。另外还是挺推荐采用官方题解中全程 int 的解法,不需要考虑那个 0.9999 的精度问题。

牛客小白月赛 44 题解

Problem A

由题意最优解区间互不重叠,直接模拟找出所有区间即可。如果不方便存储,可以考虑使用 vector 容器。

Problem B

换参考系:对于每一个植物格子,如果周围 格子都没有保护伞,一定会被偷走。(直接暴力染色可能需要两遍 for 循环较麻烦)

Problem C

通过五折出点可以拿回 投资的 RMB,因此每次对 RMB 数除以二下取整并统计获取的经验即可。

Problem D

根据下方的样例解释,不难发现表格中的规律:

Problem E

由于每个黑点下一步都是白点,最优解直径长度只能是 (黑白交替,两头都是黑)

据此直接统计黑点个数 ,根据求和公式计算 ,注意开 long long

Problem F

参考《电池的寿命》一题,考虑利用其余 条链拼到即将成为重心的点上。

最终解两个不等式,加以分类讨论判断即可:

第一个式子可以考虑 预处理,第二个式子对于一个 批量计算考虑奇偶分讨:

全部评论
附一下 C 题的标算,感觉 main 函数里头的部分还是挺简单的:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=50516047
点赞 回复
分享
发布于 2022-01-22 15:07

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务