摘要:
查找数组中第k个数,可以利用基于快速排序思想的快速选择算法。注意事项同快排完全相同一样int QuickFindK(int nums[],int l,int r,int k){ if(l==r&&l==k) return nums[k]; int left=l-1,right=r+1; int ke 阅读全文
posted @ 2021-12-08 20:17
80k
阅读(33)
评论(0)
推荐(0)
摘要:
二分查找的本质是寻找一个性质,使数组的左侧全不满足,右侧全满足(或左侧全满足,右侧全不满足)。查找的结果是最后一个或第一个满足的点(左侧区间最右或右侧区间最左)根据两种情况,有不同的check()、mid、l、r写法 查左侧区间最右 mid=(l+r+1)>>1; if(check(mid)) l= 阅读全文
posted @ 2021-12-08 20:15
80k
阅读(62)
评论(0)
推荐(0)
摘要:
简单的数位模拟题len位数共有 len*9*10^(len-1)个(10^(len-1)~10^n-1)可以对n进行试减,使范围内的数字全为len位。同时对于n对应的数字x有(x-10^(len-1)+1)*len>=n可以解得xx>=[n/len]-1+10^(len-1)利用n-=(x-10^( 阅读全文
posted @ 2021-12-08 20:14
80k
阅读(26)
评论(0)
推荐(0)
摘要:
不使用数学方法,有明显的两段性适用于二分查找。同时第i行有几个数小于mid可以直接计算,[mid/i」个 阅读全文
posted @ 2021-12-08 20:12
80k
阅读(18)
评论(0)
推荐(0)
摘要:
可以转化为二维背包问题。负无穷可以用memset和-0x3f初始化 阅读全文
posted @ 2021-12-08 20:12
80k
阅读(39)
评论(0)
推荐(0)
摘要:
关于信息熵,n个状态可携带log_2(n)的信息量n次实验,每次m个信息,共可判断(n+1)^m种情况 阅读全文
posted @ 2021-12-08 20:11
80k
阅读(24)
评论(0)
推荐(0)
摘要:
二维转一维 m*n数据范围 num->{num%n,num/n};用unordered_map记录特殊的映射,非特殊不记录,节省空间。 阅读全文
posted @ 2021-12-08 20:11
80k
阅读(44)
评论(0)
推荐(0)
摘要:
归并排序模板 int tmp[100010];void MergeSort(vector<int> &nums,int l,int r){ if(l>=r) return; int mid=(l+r)/2; MergeSort(nums,l,mid);//使用mid和mid+1防止死循环 Merge 阅读全文
posted @ 2021-12-08 20:07
80k
阅读(34)
评论(0)
推荐(0)
摘要:
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); 阅读全文
posted @ 2021-12-08 20:05
80k
阅读(79)
评论(0)
推荐(0)
摘要:
模板以及说明如下 void QuickSort(vector<int> &nums,int l,int r){ if(l>=r) return; int key=nums[r];//r或l int left=l-1,right=r+1; while(left<right) { while(nums[ 阅读全文
posted @ 2021-12-08 20:04
80k
阅读(28)
评论(0)
推荐(0)

浙公网安备 33010602011771号