Content:杂题
Date:2025.8.14
题目大意
给你一个数组 a,你可以选择任意互不相交的子数组,先计算每一个子数组的 MEX 值,然后将这些 MEX 值的异或和作为这个方案的价值,求你可以获得的最大价值。
解题思路
首先我们肯定可以暴力 DP,定义 dpi,j 表示前 i 个数能否凑出价值为 j 的方案,转移显然是 O(n3) 的。
考虑如何优化。由于 MEX 的性质,可以发现从 i 往后的一段区间内 MEX 值是单调不降的,所以其中一定有大量相等的段。这些段本质是一样的,所以我们只需要考虑那些前后不同的位置即可,这些符合条件的转移区间至多有 2n 个,所以我们就得到了复杂度为 O(n2) 得做法。
提交记录:Link
题目大意
已知一个由 B, O, I 组成得字符串每个区间得众数得出现次数,且 B 为全局众数,求原串种 B 出现的位置。
解题思路
首先我们可以找到第一个和最后一个出现的 B 的位置。
- 左侧最后一个满足 m1,n=ml,n 的位置 l。
- 右侧最后一个满足 m1,n=m1,r 的位置 r。
然后我们考虑根据已知信息推出区间 (l,r) 内的 B 的位置。主要有以下三种情况 (cur 表示当前已知的 B 的数量):
- 若 ml,i−1=cur 且 ml+1,i−1=cur−1 且 ml,i=ml,i−1+1,则位置 i 为 B。
- 若 mi,r=ml,r−cur 且 mi,r−1=ml,r−cur−1 且 mi,r=mi+1,r+1,则位置 i 为 B。
- 若 ml+1,i=ml,i−1 且 mi,r=mi+1,r−1,则位置 i 为 B。
提交记录:Link
Luogu-P8386 [PA 2021] Od deski do deski
题目描述
给定 n,m,求满足以下限制的长度为 n 的序列数目:
- 每个元素在 [1,m] 之间;
- 一次操作定义为删除一个长度至少为 2 且区间两端相等的区间,该序列需要在若干次操作内被删空。
答案对 109+7 取模。
解题思路
可以发现最后的答案一定是由 a………a 这样的字符串拼接成的。所以我们定义 fi,j,0/1 表示前 i 个位置包含 j 个不同的数且符合/不符合条件的方案数,转移显然。
fi,j,1×jfi,j,1×(m−j)fi,j,0×jfi,j,0×(m−j)→fi+1,j,1→fi+1,j+1,0→fi+1,j,1→fi+1,j,0
答案即为 i=0∑nfn,i,1,注意取模。
提交记录:Link