小红一共有 n 个盒子,标号为 1 到 n ,小红向盒子里放入小球 m 次,每次进行以下两个操作中的一个: 1. 向编号为 x 的盒子里放入一个小球; 2. 向除了编号为 x 的其他 n - 1 盒子里放入一个小球。 小红想知道,第几次操作之后,所有盒子里至少都有一个小球,如果一直无法达到这个目标,输出 -1 。
第一行两个整数 n 和 m ,表示盒子的数量和操作的次数。 接下来 m 行,每行两个整数 t_i 和 x_i ,表示第 i 次操作的类型和 x 的值。 1 ≤ n, m ≤ 10^5 1 ≤ t_i ≤ 2 1 ≤ x_i ≤ n
输出一个整数,表示第几次操作之后,所有盒子里至少都有一个小球,如果一直无法达到这个目标,输出 -1 。
3 3 1 1 1 2 1 3
3
3 4 1 1 2 2 1 3 1 2
4
考点:模拟
数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:模拟
本题切入点
维护每个盒子已有小球数,记录「已被整体加球」的次数;判断第 i 次操作后是否全部 ≥1,用计数变量避免每次 O(n) 检查。
不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。
思路框架(模拟 通法 · 非本题专属)
实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。
复杂度:时间 O(操作次数) | 空间 O(状态数)
该范式的通法易错点
对照本题
样例 1:输入 3 3 / 1 1 / 1 2 / 1 3 → 输出 3
三次操作之后,所有盒子里都至少有一个小球。
样例 2:输入 3 4 / 1 1 / 2 2 / 1 3 / 1 2 → 输出 4
第一次操作后,盒子 1 里有小球。第二次操作后,盒子 1、3 里有小球。
第三次操作后,盒子 1、3 里有小球。
第四次操作后,每个盒子里都有小球。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年美团秋招编程岗第三批笔试。