AtCoder Regular Contest 133

AtCoder Regular Contest 133

我怎么老是只会A。。这场是现场打的,只不过unrated。
这个博客园怎么变得【】了啊,改了权限就非要在园子里提示。/ll

B - Dividing Subsequence#

题意是给出两个 1~n 的排列,寻找最大的 k
使得存在 1i1<i2<...<ikn1j1<j2<...<jkn,满足:对于 tpit|qjt


首先,可以 O(nlogn) 找出所有满足 pi|qj(i,j) 对。
于是我们要求 ij 都上升的最长子序列。
实际上是分组最长递增子序列。
借一张图。第 i 行是 pi|qj 的所有 j

然后我们可以翻转一下每一组内部(防止组内自己和自己递增),然后就可以直接求了。

C - Row Column Sums#

考虑全部填 k1,然后减去一些。
Ci 为第 i 行减去的最小值
Di 为第 i 列减去的最小值
答案是 max(Ci,Di)

证明:
因为有解,所以 Ai=Bi 所以 CiDimodk
不妨列和 > 行和,每扫到一列,把需要减少的行都减掉(在这列能减的情况下),多的减到第一行去就行
因为是 modk 的,所以不会出现负数。

D - Range XOR#

首先转化为 前缀和 选两个异或
再容斥一下变成 solve(R, R, V) - solve(L - 1, R, V) - solve(R, L - 1, V) + solve(L - 1, L - 1, V)
注意要L-- 因为边界问题 sum[l]^sum[l-1] 代表选择 l
然后会发现前缀和是

4x+: 0  1 2    3
   : 4x 1 4x+3 0

然后分类讨论,其中(4x/4x+3)^(4y/4y+3)的情况要数位dp
有亿些细节。

posted @   ACwisher  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示
主题色彩