小明搬家
题目描述
小明要搬家了,大家都来帮忙。
小明现在住在第 N N N 楼,总共 K K K 个人要把 M M M 个大箱子搬上 N N N 楼。
最开始 M M M 个箱子都在 1 1 1 楼,但是经过一段混乱的搬运已经乱掉了。最后大家发现这样混乱地搬运过程效率太低了,于是总结出了提高效率的方法。
大家的速度都是每分钟上(或下)一层楼。所有向上走的人手中都拿一个箱子,所有向下走的人手中都不拿箱子。到达第 N N N 层立刻放下箱子向下走,到达第 1 1 1 层立刻拿起箱子向上走。当一个人向上走,另一人向下走而在楼道里相遇时,向上走的人将手中的箱子交给另一人,两人同时反向。即原来拿箱子向上走的人不拿箱子向下走,原来不拿箱子向下走的人现拿着箱子向上走。
求将所有箱子搬完所需的最短时间。
输入格式
第一行 N , K , M N, K, M N,K,M,分别表示楼层数、人数、还放在一楼地上的箱子数。
接下来 K K K 行,每行两个数 A i , B i A_i,B_i Ai,Bi。
A i A_i Ai 表示第 i i i 人现所在的楼层数, B i B_i Bi 为 0 0 0 或 1 1 1,为 0 0 0 表示第 i i i 人正拿着箱子向上走,为 1 1 1 表示第 i i i 人不拿箱子向下走。
输入满足没有任意两人正在同一楼层,在第 1 1 1 层的人一定正拿着箱子向上走,在第 N N N 层的人一定正不拿箱子向下走。
输出格式
仅包含一个整数,为搬完箱子的时间。
样例 #1
样例输入 #1
5 2 4
1 0
3 0
样例输出 #1
20
提示
对于 30 % 30\% 30% 的数据, K ≤ 100 K \leq 100 K≤100, M ≤ 100 M \leq 100 M≤100;
对于 60 % 60\% 60% 的数据, K ≤ 1000 K \leq 1000 K≤1000, M ≤ 1 0 9 M \leq 10^9 M≤109;
对于 100 % 100\% 100% 的数据, N ≤ 1 0 9 N \le 10^9 N≤109, K ≤ 5 × 1 0 5 K \le 5 \times 10^5 K≤5×105, M ≤ 1 0 9 M \le 10^9 M≤109。
Scratch实现
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容