wp_spţ牛客寒假营典题
补题所得,按照知识板块分,可能加上其他地方找到的题
代码实现
[乘法逆元] (https://oi-wiki.org/math/number-theory/inverse/)
- 快速幂法求逆元
1 | inline ll qpow(ll a, ll b, ll mod = MOD) { |
- 乘法原理(独立事件同时发生)
- 加法原理(互斥事件)
A+B problem
-
核心模型: 题目给出一群概率如何打表?如何转化题目条件
-
题目条件转化
这道题我认为最难的是读懂同时满足的三条条件最终所有显示器均有灯管被点亮(也就是说显示器的灯管不能全灭)。
最终所有显示器显示的结果均为合法数字。
第一排的显示器前后拼接形成的四位十进制数记作 A,第二排的显示器前后拼接形成的四位十进制数记作 B 的话,满足:A+B=C。(两排显示器从左到右依次作为千位、百位、十位、个位进行拼接,可以存在前导 0)。
当我们读完题目可以当一个组合满足第三条条件时同时可以满足前两个。
题目要求你对“显示器”做算术运算,你只需要关心这个显示器显示了哪个数字。只要它显示了数字,它就一定亮了,也一定合法。其他都是出题人故意写的干扰项。
以后遇到这种n个条件叠加在一起的概率题药仔细想想是不是里面又逻辑包含/递推关系 -
概率转换思路
1 | 每根灯管亮起来的分数概率用乘法逆元转换 |
- 数位DP正解 :可以容纳高精度,复杂度$$O(L \cdot 10^2)$$ 为数字的位数(本题中 )
1 |
|
- 小数据AC代码:
1 | // Time: 2026-02-03 16:11:12 (周二) |
ADhoc
贪心
Digital Folding
- 核心模型: 数位贪心显然当答案位数越高越好
- 关键代码:
1 | void solve() |
DP
线性划分DP
Blackboard
- 核心模型:划分型dp,注意到它的性质是有单调性的;判断区间是否能成为一个集合当且仅当
if ((nums[tp] & mask) == 0) - 思维误区 (Bug):注意如果中间塞很多很多0就会tle->可以选择链表来往上找,记得要加上区间dp和(我用树状数组处理,注意下标)
- 修正逻辑 (Patch):
- 关键代码:
1 | struct Fenwick |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ZuesHans's little bag!







