UOJ #311「UNR #2」积劳成疾】的更多相关文章

需要锻炼$ DP$能力 UOJ #311 题意 等概率产生一个长度为$ n$且每个数在[1,n]间随机的数列 定义其价值为所有长度为$ k$的连续子数列的最大值的乘积 给定$ n,k$求所有合法数列的价值和 题解 设$ f(x,y)$表示长度为$x$的数列中,最值不超过$ y$的所有数列的价值和 若数列的最值不是$ y$则$ f(x,y)=f(x,y-1)$ 否则枚举最左边的最值位置,设为位置$ i$ 则$ f(x,y)$可由$f(i-1,y-1)·w(y)^{calc(i)}·f(x-i,y)…
神仙题啊... UOJ #310 题意 将原集合划分成$ A,B,C$三部分,要求满足$ A,B$不全为空且$ A$的异或和等于$ B$的异或和 求方案数 集合大小 $n\leq 10^6$ 值域$val \leq 10^6$ 题解 如果要满足$ A,B$的异或和相同,必然有$ A \cup B$中所有元素异或和为$ 0$ 如果存在这样一个集合$ A \cup B$,这之中的每个元素可以在集合$ A$中也可以在集合$ B$中 即对答案产生$ 2^{|A|+|B|}$的贡献 设每个元素$ a_i$…
传送门 果然\(dp\)题就没咱啥事儿了 设\(f_{i,j}\)为长度为\(i\)的区间,所有元素的值不超过\(j\)的总的疲劳值 如果\(j\)没有出现过,那么\(f_{i,j}=f_{i,j-1}\) 如果\(j\)出现过,我们考虑枚举\(j\)第一次出现的位置\(k\),设包含那个位置的长度为\(m\)的区间个数为\(c\),那么这里\(j\)的贡献就是\({w_j}^c\),前面没有\(j\),是\(f_{i-1,j-1}\)后面可能还有\(j\),是\(f_{i-k,j}\) 综上,…
题目 考虑直接顺着从\(1\)填数填到\(n\)发现这是在胡扯 所以考虑一些奇诡的东西,譬如最后的答案长什么样子 显然某一种方案的贡献是一个\(\prod_{i=1}^nw_i^{t_i}\)状物,\(t_i\)表示\(i\)在多少个长度为\(m\)的区间里为最大值 而这里又是最大值,所以可以考虑从大到小填数,每次把填完之后相应的分裂区间,同时在这个时候也可以计算一些贡献 于是我们设\(f_{l,r,k}\)表示对于区间\([l,r]\)最大值为\(k\),我们枚举这个最大值最后一次出现的位置,…
「UNR#2」黎明前的巧克力 解题思路 考虑一个子集 \(S\) 的异或和如果为 \(0\) 那么贡献为 \(2^{|S|}\) ,不难列出生产函数的式子,这里的卷积是异或卷积. \[ [x^0]\prod_{i=1}^{n} (2x^{a_i}+1) \] 因为每一项只有两项 \(x^0,x^{a_i}\) 有值,记 \(f_i(x) =2x^{a_i}+1\), \(f'_i(x)=\text{Fwt}f(x)\) ,有 \[ f_i'(x)=\sum_{S} (1+2\times(-1)^…
「UNR#1」奇怪的线段树 一道好题,感觉解法非常自然. 首先我们只需要考虑一次染色最下面被包含的那些区间,因为把无解判掉以后只要染了一个节点,它的祖先也一定被染了.然后发现一次染色最下面的那些区间一定是一段连续的左儿子+一段连续的右儿子. 证明的话可以看官方题解,感性理解的话不难,同时,任意一段连续的左儿子+右儿子也对应一个区间.定义一个左儿子区间 \([l_i,r_i]\) 的后继是所有 \(r_i=l_i+1\) 的左儿子和右儿子,一个右儿子区间 \([l_i,r_i]\) 的后继是所有…
题目描述 一个长度为 $n$ 的序列,每个数在 $[1,n]$ 之间.给出 $m$ ,求所有序列的 $\prod_{i=1}^{n-m+1}(\text{Max}_{j=i}^{j+m-1}a[j])$ 的总和,即对所有序列求每个长度为 $m$ 的子区间的最大值乘积之和.答案对 $998244353$ 取模. $m\le n\le 400$ . 题解 dp 设 $f[i][j]$ 表示长度为 $i$ 的序列,每个数都在 $[1,j]$ 之间的所有序列每个长度为 $m$ 的子区间最大值乘积之和.…
\(\mathcal{Desciprtion}\)   Link.   给定序列 \(\{a_n\}\),支持 \(q\) 次操作: 给定 \(l,r,v\),\(\forall i\in[l,r],~a_i\leftarrow\lfloor\frac{a_i}{v}\rfloor\): 给定 \(l,r,v\),\(\forall i\in[l,r],~a_i\leftarrow a_i\otimes v\),其中 \(\otimes\) 表示二进制按位与: 给定 \(l,r\),求 \(\s…
[UOJ#311][UNR #2]积劳成疾(动态规划) UOJ Solution 考虑最大值分治解决问题.每次枚举最大值所在的位置,强制不能跨过最大值,左右此时不会影响,可以分开考虑. 那么设\(f[i][j]\)表示长度为\(i\),且最大值不超过\(j\)的所有方案之和. 因为最大值有多个,所以我们钦定每次选择最靠右的那个,所以转移就是: \[f[i][j]=f[i][j-1]+\sum_{k=1}^if[k-1][j]*f[i-k][j-1]*w[j]^{c}\] 即钦定为最靠右的那个最大…
  大概只有比较有意思又不过分超出能力范围的题叭.   可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics   任意一个状态可以描述为 \((m,s)\),表示剩下 \(m\) 个·总价值为 \(s\) 的物品未选.若当前决策为 X 操作,那么由于决策的确定性,我们必然不停 X 直到出货.所以代价为 \[\frac{x}{2}\left(\frac{n}{m}+1\right), \] 若当前决策为 C 操作,代价则为 \(\…