第二次 AB

如何评价 CSP 模拟赛两道黑题

A

注意到 x{a1bi|1in},即 x 只可能在这 n 个数中取值。

考虑怎么检查一个数 p 是否是可能的 x。若 {aip} 可重排为 {bn},则 p 是可能的 x

O(n) 地检查每个 p{a1bi|1in} 是否是可能的 x,总复杂度 O(n2)

B

钦定 R=0,G=1,Y=2

fi,j,k,o 表示在答案序列的前 i+j+k 位中填了 i0j1k2 且最后一位为 o 时的最小交换次数。

以填一位 0fi,j,k,o|o0 转移到 fi+1,j,k,0 为例,考虑增加的交换次数,即新增的一位与原序列上这一位之前的位置产生的逆序对数。

i0 都填到了这个 0 的前面,所以这个 0 不会与前面的 0 产生逆序对。

设原序列上,这个 0(第 i+10)前有 p1

  • j<p,则其中 j1 填在这个 0 前面,剩下 pj1 只能填在这个 0 后面,产生 pj 个逆序对。
  • jp,则全部 p1 都填在这个 0 前面,不会产生新的逆序对。

设原序列上,这个 0(第 i+10)前有 q2

  • k<q,则其中 k2 填在这个 0 前面,剩下 qk2 只能填在这个 0 后面,产生 qk 个逆序对。
  • kq,则全部 q2 都填在这个 0 前面,不会产生新的逆序对。

预处理 wi,j 表示第 ji 的位置,ui,j 表示 a[1,i]j 的个数即可 O(1) 转移。

C

一点不会。

D

说一下值域很小的做法吧……

预处理 pj,i=minmaxk=itiakjt,即 ai 至少向左取几位最大值才能 j,则 pj,i={0jaipj,i1+1j>ai

则若 maxj=itiaj=k,则 wk,pw,it。则 i=lrmaxj=itiaj=w=1Wi=lr[pw,it]

证明:若 maxj=itiaj=k,则 wk 时内层 都会统计 i 位置,总共统计 k 次,而 i 位置的贡献 maxj=itiaj 恰好为 k

主席树维护区间小于等于某数的数的个数,复杂度 O(nWlogn)

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