AtCoder Other Contest 做题记录
AtCoder Other Contest
ACL
ACL1C - Moving Pieces
才发现自己很久没有碰过网络流了。
题意:给定一个棋盘,上面有障碍和棋子,要求不经过任何障碍,不出界,同一个格子同时只能有一个棋子,每次可以将棋子向右或是向下移动一步。要求最大移动次数。
\(1\le N,M\le 50\)。
解法:
完全没想到可以网络流,注意到这是费用流之后题目变得很简单了。每一个点向其能走到的点连一条费用为 \(-1\),流量无限的边,跑费用流即可。
JSC
JSC2021F
WATER
题意:给定长度为 \(N\) 的数组 \(a\),长度为 \(M\) 的数组 \(b\),初始所有元素的值为 \(0\),有 \(Q\) 次单点修改,要求每一次修改后回答 \(\sum_{i}\sum_{j}\max(a_i,b_j)\)
\(1\le N,M,Q\le 2\times 10^{5}\)
解法:
解法:考虑每一次修改一个值的影响。先减去原来对答案的贡献,再加入新的贡献。一个值,例如 \(a_i\) 对答案的贡献是 \(b\) 中小于 \(a_i\) 的数量乘 \(a_i\),加上大于 \(a_i\) 的 \(b\) 之和。线段树维护一下即可。
Code Formula
Code Formula 2014 本選H - 平和協定
fydj 推荐的题目。
题意:\(n\) 个点,每一个点有两种属性 \(a_i\) 和 \(b_i\),如果 \(s_1\le (a_i-a_j)(b_i-b_j)\le s_2\),那么在点 \(i\) 和点 \(j\) 之间连一条边,问能连多少条边?
\(1\le a_i,b_i,s_1,s_2,n\le 5\times 10^{4}\),4s
解法:
根据 fydj 所说,5e4 还开 4 s,让人想到分块,更具体地说是整除分块。
先将 \([s_1,s_2]\) 容斥为 \([1,r]\),对于 \(a\) 之差为 \(x\) 的,限制 \(b\) 之差必然是一段区间 \([1,\lfloor \frac{r}{x}\rfloor]\),可以整除分块,然后二维数点。
实现上,这题空间是 64MB,不能将 n 根 n 个询问全部存下来,可以先整除分块枚举 \(a\) 之差的范围,再枚举每一个点。然后有点卡常。最后发现排序很慢,发现二维数点拆出来的两个前缀是分别有序的,改成线性的归并就过了。

浙公网安备 33010602011771号