杂题乱刷2

杂题乱刷

P10141 [USACO24JAN] Merging Cells P

题目大意

给一个序列,每次可以合并两个相邻的数,变成他们的和,编号变成较大的数的编号(相等就变成编号较大的数的编号),问最后剩下一个数,他的编号为 \(i=1\sim n\) 的概率

solution

\(f_{i,j}\) 表示将 \([i,j]\) 合并后的概率,那么从 \([1,n]\) 开始转移到 \([i,i]\) 即可计算出答案

观察转移,我们像区间DP一样分裂成两个区间,但这道题对其中一个有贡献,并且恰好分为两部分,于是就考虑前后缀优化DP,用二分找到断点

P4770 [NOI2018] 你的名字

题目大意

给定一个

CF1037H Security

[ABC215G] Colorful Candies 2

题目描述

现在有 \(n\) 个糖果, 每个糖果有一种颜色 \(c_i\).

现在高桥君想要在中间选 \(k\) 个糖果,他的快乐值是选择的糖果的颜色种类数.

对于 \(\forall k \in [1,n]\), 求出高桥君随机选择 \(k\) 个糖果的快乐值的期望值, 对 \(998244353\) 取模.

\(n \le 5 \times 10^4\), \(c_i \le 10^9\).

solution

首先一眼 \(O(n\sqrt n)\)

分析一下题目,令 \(b_i\) 表示颜色 \(i\) 出现的个数,颜色本身不重要,所以 \(b_i\) 相同的,本质相同

因为 \(\sum b=n\),所以最多只有 \(\sqrt n\)

那么问题就变成了从 \(n\) 个球,其中有 \(i\) 个特殊球,取出 \(k\) 个,取到特殊球的概率

显然可以在 \(O(n)\) 的时间复杂度依次处理 \(k=1\sim n\)

[USACO24FEB] Lazy Cow P

题目描述

给定 \(n\) 个要求,形如 \((m,b)\) ,要求前 \(m\) 个数的和要大于等于 \(b\) ,每个数的贡献为 \(3^{X-1}\)。问为了满足前 \(k(k=1 \sim n)\) 个要求,贡献最小为多少。

solution

首先考虑计算答案,对于一个要求,我们最好的做法是均分

对于一串 \(m\) 递增的要求,我们发现一个个做并不正确,如果后面平均下来的值更大,那我们不如在前面就做更多题,即 \(\dfrac bm\) 应该满足单调递减。

于是这道题变成维护 \((m,b)\) 的凸包,要求支持随机插点,向左右更新,用 \(set\) 维护即可

P1410 子序列&P4728 [HNOI2009] 双递增序列

双倍经验

题目大意

给定一个长度为 \(N\)\(N\) 为偶数)的序列,问能否将其划分为两个长度为 \(N / 2\) 的严格递增子序列。

\(N\le2000\)

solution

考虑dp,一般的LIS做法,为了满足正确性,维数可能需要3到4维,这道题问的只是可行性,用DP数组存 \(0/1\) 显然不优,考虑把状态转到dp值上

\(f_{i,j}\) 表示做完前 \(i\) 个后,\(a_i\) 那个集合里有 \(j\) 个数,另一个集合的最小值

转移就考虑放在哪个集合即可

posted @ 2024-06-20 16:31  zhy_learn  阅读(7)  评论(0编辑  收藏  举报