AtCoder Regular Contest 135 题解

A

最终拆分得到的数是若干个 3 和若干个 2 ,用 map 模拟拆分的过程即可。

B

考虑将 a1,a2 看作主元。那么发现,

  • 如果 i1(mod3),那么 ai=a1+ci
  • 如果 i2(mod3),那么 ai=a2+ci
  • 如果 i0(mod3),那么 ai=cia1a2

其中 ci=ai2ci1ci2(i3),c1=c2=0

又因为 ai0,我们乱搞搞即可可以得到形如 a1X,a2Y,a1+a2Z 的式子,由此可以得出一组合法的 {ai}

C

Bi=AiA1,那么可以发现能够得到的序列中第一个元素只有以下几种可能:

  • A1
  • B2,B3,,Bn

记这个集合为 S,那么题目等价于求 maxxSi=1nBix,直接无脑建出 Bi 的 trie 树后在上面瞎 dfs 即可。

然后才发现 wssb,只用记录下 Bi 中每一位上 1 的个数,这样可以 O(logV) 地对每一个 x 计算 里的值。

D

一道我不是太擅长的转化 + 贪心。

u1s1 我整场比赛就败在这道题上了,过完 C 后我花了整整 20 分钟思考这道题却毫无头绪,丢了 D 开了 E 后才发现 E 比 D 可做许多,到后来会了 E 却没来得及调了 /ll/ll

记最终得到的序列为 B,令 Xi,j=Ai,j·(1)i+j​,Yi,j=Bi,j·(1)i+j。那么可以发现,一个矩阵 B 能够被得到的必要条件是 iX 矩阵第 i 行的和等于 Y 矩阵第 i 行的和;jX 矩阵第 j 列的和等于 Y 矩阵第 j 列的和。同时也不难证明其是充分条件:每一次通过 n1 次操作将 X,Y 第一列上的值变得相同,然后归纳下去即可。

也就是说题目转化为,给定一个矩阵 A,我们要求出令一个矩阵 B,满足 iAi 行上所有元素之和等于 B 的第 i 行上所有元素之和,jAj 列上所有元素之和等于 B 的第 j 列上所有元素之和。我们将这个过程倒过来,记 xi 表示 A 矩阵第 i 行的元素和,yj 表示 B 矩阵第 j 列的元素和,那么每次操作等价于,选择一个 (i,j,V),令 xixiV,yjyjV,Yi,jYi,j+V,ansans+|V|。要使得最终 xi=yj=0ans 最小。

不难发现答案下界是 max(i=1n|xi|,j=1m|yj|)。考虑这样构造达到这个下界:

  • 首先,每次选择一组 xi>0,yj>0(i,j),然后执行操作 (i,j,min(xi,yj)),或者选择一组 xi<0,yj<0(i,j),然后执行操作 (i,j,max(xi,yj))。、
  • 如果找不到这样的 i,j,那么意味着 x,y 之一已经被情况,不妨假设 y 已经被清空,此时我们再找出一对 i1,i2 使得 xi1>0,xi2<0,然后执行 (i1,1,min(xi1,xi2)),(i2,1,min(xi1,xi2))​ 即可。

可以发现通过上述构造,答案刚好达到下界 max(i=1n|xi|,j=1m|yj|)

时间复杂度 Θ(n2),如果将 n,m 视作同阶。

E

u1s1 这个 E 真的比 D 可做!!!!111

首先暴力求解答案非常容易:每次找到 >ai 且为 i+1 的倍数的最小数作为 ai+1

注意到这样一个性质,就是当 i 大概达到 X 时,ai=ai1=ai+2ai,也就是说 aiX 附近的某个位置之后是一个等差数列。

这样我们就得到了一个 X​ 的做法,对小于这一阈值的部分暴力,大于这一阈值的部分等差数列求和,想法很好,唯一的不足是过不去(

考虑优化,直觉告诉我们,当 i 达到一个小于 X 的临界值时,aii 也开始成等差数列——更具体地,是一段一段等差数列。我赛时打了个表,发现当 X=1018 时,[1,2×106] 中,aii 的等差数列段数大概是 116×104,但 [1,108] 中,aii 的等差数列段数只增长到了 117×104,这意味着 2×106 后面这一部分等差数列段数是很少的,因此直接暴力找等差数列即可,找等差数列可以二分右端点,然后判是否前一项都大于后一项即可,这容易 O(1) 判断。事实上,官方题解证明了等差数列段数是 X1/3 的,有兴趣可以研究官方题解(

为什么赛时没调出来 /fn/fn/fn

F

太难了,日后有时间再慢慢研究。

posted @   tzc_wk  阅读(256)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
历史上的今天:
2021-02-14 Prufer 序列
2021-02-14 Codeforces 632F - Magic Matrix(暴力 bitset or Prim 求最小生成树+最小瓶颈路)
点击右上角即可分享
微信分享提示