摘要: 大整数用数组表示第一位写在index=0的位置,因为运算可能进位。vector<int> 自带size(),方便表示大整数;输出的时候要反向 高精度加法要记得最后加上carryvector<int> add(vector<int> &A, vector<int> &B){ if (A.size() 阅读全文
posted @ 2021-12-08 20:28 80k 阅读(63) 评论(0) 推荐(0)
摘要: 求数组的逆序对可以用归并排序的思想。在归并的过程中,求出当前范围的逆序对数。只需在归并排序的代码中多加一行 void MergeSortAndReversePairs(vector<int> &nums,int l,int r) { if(l>=r) return; int mid=(l+r)>>1 阅读全文
posted @ 2021-12-08 20:20 80k 阅读(30) 评论(0) 推荐(0)
摘要: 查找数组中第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 阅读(32) 评论(0) 推荐(0)
摘要: 二分查找的本质是寻找一个性质,使数组的左侧全不满足,右侧全满足(或左侧全满足,右侧全不满足)。查找的结果是最后一个或第一个满足的点(左侧区间最右或右侧区间最左)根据两种情况,有不同的check()、mid、l、r写法 查左侧区间最右 mid=(l+r+1)>>1; if(check(mid)) l= 阅读全文
posted @ 2021-12-08 20:15 80k 阅读(61) 评论(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 阅读(24) 评论(0) 推荐(0)
摘要: 不使用数学方法,有明显的两段性适用于二分查找。同时第i行有几个数小于mid可以直接计算,[mid/i」个 阅读全文
posted @ 2021-12-08 20:12 80k 阅读(17) 评论(0) 推荐(0)
摘要: 可以转化为二维背包问题。负无穷可以用memset和-0x3f初始化 阅读全文
posted @ 2021-12-08 20:12 80k 阅读(37) 评论(0) 推荐(0)
摘要: 关于信息熵,n个状态可携带log_2(n)的信息量n次实验,每次m个信息,共可判断(n+1)^m种情况 阅读全文
posted @ 2021-12-08 20:11 80k 阅读(23) 评论(0) 推荐(0)
摘要: 二维转一维 m*n数据范围 num->{num%n,num/n};用unordered_map记录特殊的映射,非特殊不记录,节省空间。 阅读全文
posted @ 2021-12-08 20:11 80k 阅读(43) 评论(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 阅读(32) 评论(0) 推荐(0)
摘要: ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); 阅读全文
posted @ 2021-12-08 20:05 80k 阅读(77) 评论(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 阅读(26) 评论(0) 推荐(0)
摘要: swap()函数定义在std中,可用于交换容器的元素。rand()返回0~INT_MAX的随机数,可以用取余的方法求一定范围的随机数。random_shuffle(begin(s), end(s));也具有打乱的功能。advance(it,n);可令迭代器前进(n为负表示后退)n步distance( 阅读全文
posted @ 2021-12-08 20:01 80k 阅读(37) 评论(0) 推荐(0)
摘要: 1、通过一个回文数计算下一个回文数: long long NextMirror(long long num) { string s=to_string(num); int n=s.size(); for(int i=(n-1)/2;i>=0;i--) { if(s[i]!='9') { char t 阅读全文
posted @ 2021-12-08 19:59 80k 阅读(50) 评论(0) 推荐(0)