杂题笔记

  • XSY5208 odekeke

先考虑 c=0 怎么做。

直接 DP 非常困难,发现一个球放 A 还是 B 的决策与放圆洞还是方洞的决策互相独立,可以求出两种决策的方案数再乘起来。fi 表示 A 总重量为 i 的方案数,gi 表示方洞总重量为 i 的方案数,做 01 背包。合法的方案判一下各个限制即可。

c=1 显然是考虑删掉一个数后的背包,对于每个数算一下删掉后的答案即可。

  • XSY5206 bracket

容易发现,答案与这个括号串的构成无关,我们只需考虑一个区间内是否构成合法串即可。

[l,r] 合法当且仅当以下三个条件成立:

  • rl+1 为偶数。

  • 当所有 ? 均填上 ( 时,没有多余的 )

  • 当所有 ? 均填上 ) 时,没有多余的 (

必要性显然,充分性证明可以先将串中所有 () 左侧的括号成对删掉,这显然不影响判断。可以构成一个形如 )?)??))?(((??? 的串,若中间部分长度为奇数,则两边至少有一个括号无法匹配(因为整个串是偶数,两边匹配后也应为偶数),否则按如上的条件判断,若符合则左右两边都必定可以构造。

发现对于同一个 l,合法的 r 是以 l 开始的一段连续区间,对于同一个 r,合法的 l 是以 r 结束的一段连续区间,于是可以直接 dp。Ri 表示当 l=i 时满足条件 2 的最大的 rLi 表示当 r=i 时满足条件 3 的最小的合法的 lfi 表示考虑前 i 个字符的答案,有转移 fi=max(fi1,maxRji,Lijfj1+a[i(j1)]+b),线段树维护 max(fjaj) 即可。

  • XSY 5218 perm

考虑每次操作本质是什么,发现对于 (i,pi),操作 1 后变为 (ixor2n1,pi),操作 2 后是变为 (rev(i),pi),其中 rev(i) 表示 i 循环移位后的结果。

于是枚举循环移位多少次,之后可达的序列就是对下标异或上任意一个数后的结果。现在要最小化下标异或上一个数的逆序对数,发现第 i 位异或 1 即交换相邻的长度为 2i 的区间,这个过程可以归并排序时求出,且下层交换不会影响上层,对每一层交换或不交换的情况取 min 再求和即可。

posted @   Terac  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示