AcWing
Start: 2024.10.24
End: Doing
Plan: Variable Time
Check:
章节:课节 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
一、基础算法 | 10.24 | 习一 | \ | \ | ||
二、数据结构 | 习二 | 习三 | \ | |||
三、搜索与图论 | 习四 | \ | ||||
四、数学知识 | 习六 | 习七 | ||||
五、动态规划 | 习八 | \ | \ | |||
六、贪心 | \ | \ | \ | \ | ||
七、时空复杂度分析 | \ | \ | \ | \ | \ |
注:习 X 指第 X 周的习题课。
一、基础算法
1. 快速排序
1 | #include <iostream> |
注意:
不能随意搭配,只有下面两种:
1
2
3 int x = q[l+r>>1];
quick_sort(q, l, j);
quick_sort(q, j+1, r);
1
2
3 int x = q[l+r+1>>1];
quick_sort(q, l, i-1);
quick_sort(q, i, r);
2. 归并排序
1 | #include <iostream> |
拓展:本模版,可以用来计算所有的逆序对数量。
逆序对的定义如下:对于数列的第 i
个和第 j
个元素,如果满足 i<j
且 a[i]>a[j]
,则其为一个逆序对;否则不是。
1 | #include <iostream> |
3. 二分
查找有序序列中的某数的范围下标。
1 | #include <iostream> |
对于浮点数,反而更简单了,根本不存在mid+1的困扰(虽然上述也解决了这个问题)
下面是求浮点数的三次方。(数字范围在 -10000到10000之间)
1 | #include <iostream> |
模版:
1
2
3
4
5
6
7 int L=-1, R=n;
while(L+1 != R){
int mid = L+R>>1;
if(check()) R = mid;
else L = mid;
}
// 使用 L/R 处理....
4. 高精度
二、数据结构
三、搜索与图论
四、数学知识
五、其他
评论
标签
网站资讯
文章数目 :
67
已运行时间 :
本站总字数 :
352.3k
本站访客数 :
本站总访问量 :
最后更新时间 :