
其它
较为基础的算法
蒟->zhuqm<-蒻
这个作者很懒,什么都没留下…
展开
-
二分
引入一个递增序列,求值为X的的下标。可以用一遍循环A(水)。升级,有Q次询问值为X的下标。那么这时一遍循环就会超时。注意,这是一个递增序列,∴我们可以采用二分的思想,每次查找都取中间值比大小,如果mid小了,答案就在【mid+1~R】,否则就在【L ~ mid-1】。总会有某一时刻mid=X,这时就找到答案了。时间复杂度O(qlogn)。例题题目描述给出有n个元素的由小到大的序列,请...原创 2020-03-21 20:48:26 · 1156 阅读 · 0 评论 -
快速幂
引入求N的M次方%Q。有次方,可能会需要高精度,但是结果又%Q,∴可以根据同余,边算乘方边取模。我们可以用分治解决。例题P1226 【模板】快速幂||取余运算分析快速幂裸题。代码#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#define full(a,b) memset(a,b...原创 2020-03-21 17:32:22 · 121 阅读 · 0 评论 -
高精度
引入在数字运算中,有时候a*b连long long 都装不下,这个适合,就需要用到高精度了。例题1P2955 [USACO09OCT]Even? Odd? G分析判断一个数的奇偶,即判断能否被2整除,其实也就只需要判断末位数字是否为2的倍数。代码#include<bits/stdc++.h>using namespace std;int main(){ int n;...原创 2020-03-14 13:37:07 · 160 阅读 · 0 评论 -
归并排序
引入一串数,排序。这是C++中再经典不过的了。但是有一种排序算法快而稳定,还可以求出逆序对的数量,他就是归并排序。但他需要长度为N的辅助数组。其思想是分治,还涉及到一定单调序列的思想。例题将n个整数从小到大排列,并输出。(n<100000)注意数据范围!!输入第一行:n第二行:n个数字,每个数字用空格隔开。输出一行,已排序好的n个数字。每个数字用空格隔开。样例输入5...原创 2020-02-29 20:11:59 · 207 阅读 · 0 评论