A. Remove Duplicates
题意:就是输出去重的序列,输出每个数最后一次出现的位置。
B. File Name
题意:给你个长度为n的串,如果连续x出现超过三个或三个以上,就需要删除只剩下2个,问你最小删除多少。
做法:找到每个连续的x出现的位置,然后判断往后有多少个x 如果sum>=3个就让ans+sum-2就行,更新下起点继续走。
C. Letter
题意:有n个楼,每个楼有ai个房子,问给你一个数字是在那个楼的几号房子。
做法:对于每个邮件二分房子和就行。(先把房子总数存一下,对于邮件二分就行了。)
D. Almost Arithmetic Progression
题意:给你N个数,然后问你是否有一个公差可以使这个序列满足,对于当前这N个数可以对于每个数+1 +0 -1 三种操作(+0不算),问你最少操作多少次数。
做法:我直接想的就是把前两个数的公差(9个)用bfs跑一下就行了,但是看到别人的代码都很短。n==1需要特判下。毕竟我是太弱了。
E. Bus Video System
题意:给你n个车站人数变化的情况(正数表示上人了,负数表示下人了),和车的最大容纳量,问你在起始站的人数有多少种可能。
做法:求个最大最小值。如果最大值大于车的容纳量或者最小值的绝对值大于车的容纳量违背常理输出0;不违背常理,假如max>=0的话,那么初始的地方最多能上w-Max个人否则能上w个人。如果Min>=0的话,那么说明都是正的,就等于Max,否则Min<0 表示初始最少为abs(Min)个人,如果abs(Min)>Max,也违背常理输出0,否则输出Max-abs(Min)+1。
F. Mentors
题意:给你n个人,每个人都有自己技能值ai,然后给你m个关系,表示这两个人关系不好,如果ai>aj && i跟j的关系好,那i是j的师父。问你每个人有多少徒弟。
做法:先将技能值排序,然后对于每个关系中的两个人,判断下谁大谁小,标记下数量。然后对于每个人二分判断下有多少比自己小的,用返回的个数,减去和自己关系不好的而且比自己小的人的个数就OK了。
G. Petya's Exams
未补题。。。