n10000专题

iNOC产品部-杨辉三角的变形(第二种方法也可以通过,测试数据太弱,n10000就会爆的)

// iNOC产品部-杨辉三角的变形(第二种方法也可以通过,测试数据太弱,n>10000就会爆的) #include<bits/stdc++.h>using namespace std;int F(int n,int k){if(k==1||k==2*n-1)return 1;if(k<1||k>2*n-1)return 0;return F(n-1,k)+F(n-1,k-1)+F(n-1

有 n 个无序整数( n10000), 则找出其中最大的 M 个数字( 5lt;Mlt;10), 所需要的最小时间复杂度为:

第一种算法:  直接对n个数进行堆排序,每次建立一个大根堆,只需完成排序的前m次。这种的方法时间复杂度是O(mlogn),每建立一次大根堆需要 logn 的时间,总共m次。 第二种算法:  最开始选取前m个数,用这m个数建立一个小根堆。接下来,对后面n-m个数进行遍历,用根结点与这n-m个数进行比较,当发现一个数比根结点大时,交换,然后重新建立一个小根堆。最终我们可以得到m个最大的数字。这种方法