AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

提高课第六单元学习笔记

作者: 作者的头像   c-y-m ,  2025-06-07 22:41:49 · 黑龙江 ,  所有人可见 ,  阅读 1


0


1、龟速乘

主要用于乘法时取模($当a <= 1e18, b <= 1e18时,直接取模会爆long long$)

思想和快速幂一致

快速幂 -> 二进制拆分 + 乘法 = 乘方
龟速乘 -> 二进制拆分 + 加法 = 乘法

https://www.acwing.com/activity/content/code/content/9475589/

2、递推

很多递推都是DP, 下面的例子中介绍了一种不一般的递推

https://www.acwing.com/activity/content/code/content/9568655/

3、递归

递归也是分治,就是分而治之,把问题一点点转化成更小的问题

一个东西能不能递归,取决于是否可以转化成更小的子问题

下面第一个代码是通用求等比数列和

https://www.acwing.com/activity/content/code/content/9568660/

https://www.acwing.com/activity/content/code/content/9568706/

4、前缀和与差分

https://www.acwing.com/activity/content/code/content/9568826/

https://www.acwing.com/activity/content/code/content/9569049/

5、二分

在实数二分时能写r尽量写r否则会出现精度问题,具体见下面第一道题目

https://www.acwing.com/activity/content/code/content/9569142/

https://www.acwing.com/activity/content/code/content/9569202/

6、排序

https://www.acwing.com/activity/content/code/content/9568657/

对顶堆:用途是动态维护第k小,他是主席树的子集

所以一般第k小都用主席树,只有中位数一般习惯用对顶堆,中位数问题具体见下面代码

https://www.acwing.com/activity/content/code/content/9569326/

https://www.acwing.com/activity/content/code/content/9569355/

7、$RMQ$

解决不带修改的区间最值问题,本质上是一个DP

f[i, j]:从i开始,长度是$2^j$的区间中,最大值是多少

预处理类似于LCA :

f[i][j] = max(f[i][j - 1], f[i + (1 << j - 1)][j - 1]);

查询[l, r], 先算出长度Len, 然后找最大的K, 并且$2^k <= len$(用log函数找)

然后用$2 * 2^k$就可以完全包含这个区间

return max(f[l][k], f[r - (1 << k) + 1][k]);

https://www.acwing.com/activity/content/code/content/9569389/

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息