各题型题解[updating]

各题型题解[updating]
4FGR各题型题解
算法基础
贪心
模拟
枚举
分治
排序
二分
二分答案
构造
倍增
前缀和/差分
题目大意
问对初始全为0的序列,如果每次仅允许对[l,r]区间的所有元素加1,那么求出得到target数组的最少操作次数我们知道对差分数组作前缀和能得到原数组。由于 target
是通过 \([l,r]\) 区间元素加 \(1\) 得到的,target 的差分数组
diff 显然记录了这样的过程:
- 每次 \([l,r]\) 操作对应 \(diff[l]+1\) 、 \(diff[r+1]-1\)
- 在操作结束后,对
diff作前缀和操作,得到target
我们要做的显然就是 “溯源”。
事实上,最少操作次数为其差分数组中正整数之和。
证明
显然正整数是操作的痕迹,想要做一次区间操作就不得不在 $diff[l]$ 加上 $1$ ,在 $diff[r+1]$ 处减去 $1$ ,显然差分数组每个正整数 $a$ 都代表有 $a$ 次操作从该位置开始。那么,负数,不会对这些产生影响吗?我们能保证绝不会有一次操作加在负数上,否则绝不会是最少操作解。因为要想加在负数上,只有对 $[l,r]$ 和 $[r+1,t]$ 分别做一次操作才能实现,显然只对 $[l,r]$ 做一次操作更为有效。
离散化
数据结构
堆
单调栈/队列
ST表
跳表
并查集
线段树
珂朵莉树
动态规划
背包DP
区间DP
树上DP
DAG的DP
状压DP
数位DP
插头DP
计数DP
图论
DFS
BFS
拓扑排序
最短路
二分图
哈密顿图
网络流
最近公共祖先
树链剖分
多项式与生成函数
快速傅里叶变换
快速数论变换
数论
素数/筛法
质因数分解
gcd/lcm
欧拉函数
费马小定理
模逆元
线性同余方程
中国剩余定理
莫比乌斯反演
其他
打表
由于 \(n\leq 10^6\) ,数据较小,可直接枚举。为了实现更快的速度,我们枚举并同时记录每个平衡数,直到得到第一个大于 \(10^6\) 的数值平衡数。然后二分打表即可。
1 | int nextBeautifulNumber(int n) { |
染色
中心扩散法
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果




![算法板子[updating]](/./images/2025-11-20/baka3.png)

