AtCoder Beginner Contest 246 Solution

更好的阅读体验戳此进入

题面链接

题面 Luogu 链接

A - Four Points

题面

给定矩形三个点坐标,求另一个点的坐标。

Solution

显然四个点横纵坐标分别两两相等,三个横坐标异或,三个纵坐标异或即可。

Code

B - Get Closer

题面

给定一个向量的坐标表示,求同向模长为 1 的向量坐标。

Solution

语法题没营养,为了凑齐一套题去写的。

Code

C - Coupon

题面

n 个物品第 i 个价格为 ai,有 kx 元优惠券,可以叠加,但不能分裂开使用,求全部购买的最少花费。

Solution

对于所有 aix 一直使用优惠券直到 ai<x,然后降序排序用剩余的 k 个券把前 k 个抵消,后面的求和即为答案。

Code

D - 2-variable Function

题面

存在函数 f(a,b)=a3+a2b+ab2+b3,要求 a,b0,给定 n,求最小的 f(a,b) 满足 f(a,b)nn1018

Solution

显然 a,b 的范围不超过 106,则可以枚举 a,二分 b,取最小值即可。

对于二分 b 的单调性证明,可以考虑固定 a 为参数,则有函数 f(b)=b3+ab2+a2b+a3,三次函数不好操作,所以考虑求导,显然 f(b)=3b2+2ab+a2,因为 a,b 非负,所以显然导函数 f(b)0,所以范围内函数取值单调递增,于是可以二分。

或者不进行二分,根据单调性,显然 a 减小时 b 不会比上次更大,所以写个双指针枚举,a 升序,b 降序,小于 n 时直接 break 即可。

Code

E - Bishop 2

题面

给定有障碍的网格图,. 为空地,# 为障碍。给定起点终点,每次移动仅可以斜向走任意长度,问从起点到终点的最少移动次数,可能无解,无解输出 -1

Solution

BFS 较为显然,因为时限 6000ms,只要写的不太丑直接搜也能过。对于本题,使用 01BFS 较为显然。我们在宽搜每次搜一步且距离仅为 1,并记录上一步的方向,如果同向则认为走了一个 0 边,异向则为 1 边,开个双端队列,同向插到前面,反之插到后面,按照正常宽搜每次取队头扩展即可。

需要注意对于 01BFS 时,我们判断是否走过和是否为答案的时候,需要在从队头取元素的时候判断,而不是在扩展的时候判断。因为如果在某一次由 1 扩展的时候如果直接把 vis 设为 true,但是这可能会导致后面从 0 扩展的,本应能插在队列中比这个更前面的更优的无法转移,使答案更劣。同时我们也需要考虑到不同方向的时候扩展也是不同,所以 vis 中也要考虑到方向这一维。

Code

F - typewriter

题面

给定 n 个字符串,字符集为小写字母,可以任意选择一个字符串,作为字符库,然后(可多次选择同一字符)任意组成长度为 l 的字符串,求一共能形成多少种长度为 l 的字符串。

Solution

容斥较为显然,显然最终答案也就是,用任意一个字符集形成的字符串减去任意两个的加上任意三个...于是我们考虑令全集为 S=2n1 然后对其进行枚举子集,二进制第 i 位为 10 代表是否考虑这个数,所以枚举的时候直接 __builtin_popcount() 算一下个数,奇数代表加,反之减。然后对于每一个字符串,因为字符集较小,也用一个 int 的二进制表示是否存在对应的字符,然后把需要的字符串都与起来,设数量为 ξ,则此次运算的字符集大小则为 ξ,所以此次答案为 ξl,加减考虑好即可。

Code

G - Game on Tree 3

题面

类似于 LG-P3554 [POI2013]LUK-Triumphal arch,给定一棵树,有点权,B 初始在 1,每轮 A 选择一个点将权值变为 0,然后 B 移动一次,B 可在任意时刻停止游戏然后获得所在点上的权值的得分,两人均采取最优策略那么最终 B 最少会拿到多少的得分。

Solution

与 POI2013 基本相同,对于本题依然考虑二分答案,对于当前的答案 k,认为大于 k 的贡献为 1,小于等于的为 0,于是显然有 dp,令 dp(i) 表示在 i 节点上时需要额外多少次的变为 0 的操作,显然有转移 dp(i)=max(json(i)dp(j)1,0)+[v(i)>k],最后判断一下根节点 10 则合法,反之不合法。

Code

Ex - 01? Queries

题面

给定长度为 N 的仅包含 01? 的字符串 S,给定 Q 组询问 (x1,c1),(x2,c2),,(xq,cq),每次将原字符串中 xi 位置的字符改为 ci,然后输出 S 有多少种非空子串,? 需任意替换为 01

Solution

太长了这里就直接放个链接吧。。

ABC246Ex 01? Queries Solution

Code

UPD

update-2022_10_24 初稿