欢迎光临散文网 会员登陆 & 注册

Educational Codeforces Round 99(A~E)

2022-06-23 18:35 作者:Asunataisiki  | 我要投稿

A.Strange Functions

题意:定义一个数 x 的翻转 f(x) 为:将其从低位到高位写成一个新数并去掉前导零。求对于所有的 1%5Cleq%20i%5Cleq%20x , g(x)%20%3D%20%5Cfrac%7Bi%7D%7Bf(f(i))%7D%20的取值有多少种。

思路f(f(x))相当于把x的后缀0给去除,所以有多少种那么就看这个数有多少位就可以了


B.Jumps

题意:

你当前站在数轴的原点 0 处,你要移动到数轴上的一个正整数点 x 处。

假如你当前的位置是 y ,正在进行第 k 次操作,你可以做出以下两种移动:

  • 移动到位置 y + k

  • 移动到位置 y-1

试求移动到点 x 的最小步数。

思路:首先容易想到一直执行第一个操作,如果正好跳到x那么直接输出答案,如果跳远了再一步一步倒退,但是这是不正确的,我们考虑把其中某些步地换成第二个操作

1 + 2 + 3 + 4 + 5 +... + k = sum

-1 + 2 + 3 + 4 + 5 + ... + k = sum - 2

1 + -1 + 3 + 4 + 5 + ... + k = sum - 3

可以发现,如果把第k步替换成第二种操作,那么对答案将会减少k + 1个贡献,因此判断sum与最后答案的差值即可,如果差一,那么最后需要倒退一步,输出 k + 1,其余输出k即可



C.Ping-pong

题意:

Alice 和 Bob 在玩乒乓球。

在一轮比赛中,发球的人开始比赛。发球员击球,接球员回球。此后,发球员和接球员必须交替击球,直到其中一方不击球。不击球的一方输掉这轮比赛,获胜方在下一轮比赛开始发球。由 Alice 开始第一轮比赛。

Alice 有 xx 点体力, Bob 有 yy 点体力,每次击球会消耗 1 点体力。如果体力不足则不能击球。每轮比赛开始的一方如果有体力必须发球。如果两人都没有体力则游戏结束。

Alice 和 Bob 都采取最优策略进行游戏。他们希望首先最大化自己获胜的场数,其次最小化对方获胜的场数。

计算 Alice 和 Bob 获胜的场数。

思路:手摸一下a的体力大于b的体力,相等,小于三种情况发现,第一个输出x - 1, 第二个输出y就可以了,然后大胆交一发就过了

首先,如果双方都要求胜场最多,那么一定是自己的所有发球对手都不接,那么在此情况下,当a的体力还剩下1的时候,b要a赢得少一些,那么就打回去,而a接不了,所以a赢x - 1次,b赢y次


D.Sequence and Swaps


题意:给出一个序列和 一个x,每次可以把序列中的一个大于x的数与 x 交换,问最少操作多少次使得整个序列升序排序,如果不能输出 -1

思路:如果有a_%7Bi%20-1%7D%3Ea_ia_%7Bi-1%7D%20%3E%20x,那么就需要将a_%7Bi-1%7Dx交换,那么可以发现,如果要操作后序列任然不降,那么还需要满足a_%7Bi%20-%202%7D%20%5Cleq%20x,那么递推回去之后发现,对于每一个满足a_%7Bi%20-1%7D%3Ea_ia_%7Bi-1%7D%20%3E%20x都是要替换的,所以每次替换后检查当前序列是否满足条件就可以了


E.Four Points

题意:在二维平面给出四个点,移动其中的点,求让这四个点成为一个边平行于x轴与y轴的正方形的最小步数(边长可以为0)

思路:4个点全排列枚举所有组合,设左上、右上,左下,右下的点分别为p_0,p_1,p_2,p_3,先讨论x坐标的情况,y坐标同理

假设最终正方形左边两点的横坐标为x_1,右边两点的横坐标为x_2,那么四个点移动的代价为%7Cp_0%20.x-%20x_1%7C%2B%7Cp_2.x-x_1%7C%20%2B%20%7Cp_1.x-x_2%7C%2B%7Cp_3.x-x_2%7C,那么如果有min(p_0.x%2Cp_2.x)%5Cleq%20x_1%5Cleq%20max(p_0.x%2Cp_2.x),那么p_0p_2在横坐标上的代价是最小的,代价为max(p_0.x%2Cp_2.x)%20-%20min(p_0.x-p_2.x) (两点间横坐标的距离),x_2同理,那么此时边长就是%7Cx_2-x_1%7C同时根据定义域也有一个取值范围,纵坐标同理,边长为%7Cy_2-y_1%7C


那么现在来讨论%7Cx_2-x_1%7C%7Cy_2-y_1%7C取值,如果二者有交集,那么就可以取到这个交集中的数,让答案为%7Cp_0%20.x-%20x_1%7C%2B%7Cp_2.x-x_1%7C%20%2B%20%7Cp_1.x-x_2%7C%2B%7Cp_3.x-x_2%7C

%7Cp_0.y-y_1%2B%7Cp_1.y-y_1%7C%2B%7Cp_2.y-y_2%7C%20%2B%20%7Cp_3.y-y_2%7C;如果二者不存在交集,那么就有一个取不到上述所说的最小值,如果离开这个最小值的范围一个单位,那么就会产生两个单位的代价,因为两个点都需要移出这个范围,最后根据这些实现代码即可

左图为最小值,右图为没有交集而产生的2倍代价


Educational Codeforces Round 99(A~E)的评论 (共 条)

分享到微博请遵守国家法律