11.27 模拟赛

复盘

T1 一眼不会。模拟样例的时候好像得到了一个对于每次询问 O(n) 做的暴力算法。不太清楚。

画了点图。差不多得到一点想法。发现用 set 维护连通块,总复杂度 O(nlog2n),1e6 肯定过不去。但应该能过 80。写写试试。

然后写了一坨。实际上这个时候思路还是很混乱的。

发现有一步不会写,随便蒙了个东西糊上去。显然假。但是数据似乎挺水应该能骗不少分。(这时还不知道捆绑测试。)

2.5h 了赶紧往后看题。

T2 送了 10 分。部分分好像是倍增。先写写试试 m=1 的。

没过手造样例。摆了不调了,或许做法是假的。

T3 什么玩意。

T4 送了 18 分。性质好像都不太会做。写吧。

0+0+0+18

总结

不足:

  • T1 不会做。
  • T2 调试没删。
  • T2 部分分不会做。
  • T4 性质不会做。

脑子跟被吃了一样,啥也不会。

知识点

T1:数学

T2:倍增

题解

A. 排序

f(i,j)i,j 在二进制下最高的不同位。

aiai+1 的情况下,如果想让 (aix)(ai+1x),那么 x 的第 f(ai,ai+1) 二进制位是唯一确定的。这取决于 ai<ai+1 还是 ai>ai+1

所以判断矛盾就很好做了。

然后一次单调修改只会影响 O(1) 个位置。这些位置重构即可。

真服了这么简单为啥想不到。真服了这么简单为啥想不到。真服了这么简单为啥想不到。

B. 交换

注意到对于 i0=j,i1=j+lcm(n,m),有 (bi0modm+i0)modn=(bi1modm+i1)modn

也就是说每 lcm(n,m) 次操作后,交换的两个数的位置是相同的。

所以求一个排列 p 表示第 i 个数经过 lcm(n,m) 次操作后,aiapi。用倍增让它跳 t/lcm(n,m) 次。最后剩下的 lcm(n,m) 次暴力。

这玩意就能过 60 分。

真服了这么简单为啥想不到。真服了这么简单为啥想不到。真服了这么简单为啥想不到。

考虑正解。

首先如果 mn 的倍数那么跟上面做法一样。

考虑 m 不是 n 的倍数的情况。

——官方题解

注意力惊人的出题人。

posted @   2huk  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示