2024.10.21 test
B
求长度 \(\ge k\) 的区间去掉前 \(k\) 大剩下权值和的最大值。\(n\le 1e5,k\le 100\)。
一个比较暴力的办法就是维护出每个区间的答案,考虑一个位置什么时候被扣掉。
首先计算出左边前 \(k\) 个与右边前 \(k\) 个比 \(a_i\) 大的位置,然后考虑匹配,形成的区间里都减去 \(a_i\)。
然后直接扫描线,线段树区间加,区间 \(\max\),复杂度 \(O(nk\log n)\)。
维护左边前 \(k\) 个与右边前 \(k\) 个比 \(a_i\) 大的位置是一个经典问题,\(O(nk)\),虽然也没什么用。
前 \(k\) 大的套路包括超级钢琴、二分等等,本题考虑枚举第 \(k\) 大的值。
从大到小加入数,把大的设为 \(0\),那么我们相当于选 \(k\) 个 \(0\) 的区间。
每次加入一个 \(0\),那么可以跟其左边 \(k\) 个和右边 \(k\) 个组合一下,再插入进去,用链表维护。
确定了 \(k\) 个 \(0\) 最左和最右的位置,向左向右拓展,求前缀和 \(\min,\max\) 即可,ST 表维护。
所以复杂度是 \(O(nk+n\log n)\)。注意如果有相同的权值我们钦定左边或右边的更大。
C
已知有 \(n\) 张麻将牌,每种牌的数量不会超过 \(4\) 张,任抽 \(14\) 张问和牌的概率。\(n\le 136\)。
一个一般的胜利状态是指包含一对相同的牌和四组牌,每组牌包含 3 张牌,要么是 3 张相同的牌要么是三张连续的同种类的非字牌。
还有两种特殊的胜利状态,第一种是“七对子”,即7个组,每组为一对相同的牌,不同组的牌不能相同.
第二种是“国士无双”,指 1m,9m,1s,9s,1p,9p,1c,2c,3c,4c,5c,6c,7c
各一张,再加上一张任意的之前提到的 13 张牌中的一张。
考虑每种情况分别考虑,最后减去第一种与第二种同时满足的方案数。
其中比较复杂的是第一种情况,每个花色都独立,所以分别计算形成多少组牌与多少对牌的方案数。
不难发现情况只有 \(O(5^9)\) 种,对应每种花色牌的选择个数,考虑直接暴力枚举就可。
最后背包合并每种花色的答案。