笔记
m0_46602569
这个作者很懒,什么都没留下…
展开
-
二分模板
//二分一般用于在有序数组中查找,如果无序应该先排序 int left=0,right=n-1,m; while(left<=right) { m=left+(right-left)/2;//防止溢出 if(a[mid]==target) break;//找到目标数,停止查找 else if(a[mid]<target) left=mid+1; else if(a[mid]>target) right=mid-1; } //这是在[0,n-1]中查找,若在[0,n)中查找循环中止条件改原创 2021-03-31 01:50:03 · 47 阅读 · 0 评论 -
排序
一、sort函数 1、使用模板 sort(start,end,cmp) start:排序的起始地址 end:排序的结束地址 cmp:排序方法 可以没有cmp函数,没有cmp函数时默认升序排序 2、cmp函数的编写 返回值为bool类型 例子: bool cmp(int a,int b) { return a>b } 3.使用 int a[1001] sort(a,a+5,cmp) 将a[0]-a[4]按从大到小排序 二、归并排序(最基本的二路归并排序) 原理:将序列两两分组,然后组内排序,原创 2020-10-06 23:14:25 · 69 阅读 · 0 评论 -
随机选择算法
问题描述:从一个无序序列找一个K大的数 最直接的想法是先排序再找,但这样需要O(nlogn)的时间复杂度; 随机选择算法虽然最坏的时间复杂度为O(n^2),但对于任何输入都可以达到O(n)的时间复杂度、 思想描述:选择一个主元,经过一次快排后主元为A[p],在A[left,right]中该主元为第p-left+1(M)大的数;若K==M ,返回主元;若K>M,则第K大的数在主元右侧,往右递归则可;若K<M,则第K大的数在主元左侧,往左递归则可; ```cpp int randomSelect(原创 2020-10-06 23:06:51 · 204 阅读 · 0 评论 -
快速幂取模
一、递归法 typedef long long LL; LL binaryPow(LL a, LL b, LL m){ if(b==1) return 1; if (b&1) return a*binaryPow(a,b-1,m)%m else { int n原创 2020-10-05 23:26:22 · 53 阅读 · 0 评论 -
常见评测结果
(1)编译错误(CE) (2)运行超时(TLE):程序运行超时 (3)运行错误(RE): (4)内存超限(MLE):超出题目所给的空间限制 (5)格式错误(PE):输出格式有误 结果正确 (6)输出超限(OLE):程序输出了非常多的内容 ...原创 2020-09-21 01:51:28 · 89 阅读 · 0 评论