
算法刷题
文章平均质量分 69
题目难度不低,简单的题没啥营养,主要讲解思路。
_小可爱
这个作者很懒,什么都没留下…
展开
-
KMP最彻底理解
KMP算法彻底理解原创 2022-11-08 01:20:21 · 405 阅读 · 1 评论 -
伊格内修斯和公主IV 动态规划题解
题解原创 2022-08-03 15:26:03 · 164 阅读 · 0 评论 -
二分查找,二分答案模板
二分查找在单调递增的序列aaa中查找≥x\ge x≥x的数中最小的一个,也就是xxx的后继。while(l < r) { int mid = (l + r) >> 1; if(a[mid] >= x) { r = mid; } else { l = mid + 1; }}在单调递增的序列aaa中查找≤x\le x≤x的数中最大的一个,也就是xxx的前驱。while(l < r) { int mid = (l + r + 1) >> 1原创 2022-04-14 22:43:38 · 186 阅读 · 0 评论 -
二进制算法刷题模板
二进制的位操作常用的二进制内置函数int __builtin_ctz(unsigned int x);int __builtin_ctzll(unsigned long long x);// 返回 x 二进制表示下最低位的1后面有多少个0int __builtin_popcount(unsigned int x);int __builtin_popcountll(unsigned long long x);// 返回 x 二进制表示下有多少个1成对变换对于非负整数nnn而言:n原创 2022-04-14 21:46:57 · 213 阅读 · 0 评论 -
快速幂,龟速乘,光速乘模板
快速幂求abmodp(1≤a,b,p≤1018)a^b mod p (1 \le a, b, p \le 10^{18})abmodp(1≤a,b,p≤1018)ll quick_power(ll a, ll b, ll p) { // ll 是long long类型 ll ans = 1 % p; for(; b; b >>= 1) { if(b & 1) ans = ans * a % p; a = a * a % p; }原创 2022-04-14 21:20:29 · 538 阅读 · 0 评论 -
线段树与区间最大子段和问题,这一篇就够了
1、经典的区间最大子段和问题问题描述:给定一个序列a1,a2,a3,..ana_1,a_2, a_3,..a_na1,a2,a3,..an,如何求出该序列的最大子段和?(询问的区间个数为mmm)解决方案: - 暴力统计:对于每一个区间[l,r][l,r][l,r],每一次选定一个子段的起点,然后枚举子段的长度,算法复杂度为O(mn2)O(mn^2)O(mn2)。 - 动态规划:我们一次性算出所有的区间的最大子段和,然后使用直接询问答案。我们规定: - ls\color{Green}lsls原创 2022-04-08 00:26:39 · 5348 阅读 · 3 评论