题意: 有n道题目m个人,每道题目有1个正确选项和a[i]个错误选项,每个人每道题只能选一个选项 求出最坏情况下分数最多的人至少能拿到几分 n<=1e2,m<=1e9,1<=b[i]<=1e2 思路: ...
分类:
其他好文 时间:
2018-08-02 13:55:05
阅读次数:
121
题目背景第二行madoka打错了??? KMP暴力啦~~~~ 我们使用 KMP 的 P 数组来找这个前缀,直接从 P[r] 向前找最坏情况会导致变成 O(n^3) ,所以我们应该优化一下: P 数组如果视为 Father 数组,那么它是一棵树。我们求的就是一个节点到根的路径上有没有区间 [k, (r ...
分类:
其他好文 时间:
2018-07-31 19:06:01
阅读次数:
124
1.排序的分类,冒泡排序和快排的实现 2.快排的最差情况: 经典快排总拿第一个数进行划分,这样在数组有序的情况下,每次划分都得到最坏的结果,都是左边 n-1个数,右边0个数,每次划分都只能减少一个数,T(n) = T(n-1) + 1;快排将退化成冒泡排序。 解决办法是:随机化算法,随机选取一个元素 ...
分类:
其他好文 时间:
2018-07-20 23:41:20
阅读次数:
286
传送门 分析 我们高兴的发现数据范围特别小,所以我们可以随便搞。因为一共只砍掉一条路,所以我们先算出对于任意一个点如果将它的出边割掉一条则它到达终点的最坏情况的最短距离是多少,然后我们从终点向起点反着跑,按最短路思想算出答案即可,具体实现见代码。 代码 ...
分类:
其他好文 时间:
2018-07-15 15:00:13
阅读次数:
183
这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性。 下表显示了三种排序算法的比较。 (1)np.sort()--函数返回输入数组的排序副本 输出: 在含有字符串的sort排序中: 输出: (2)np.argsort() 函数对输入数组沿给定轴 ...
分类:
编程语言 时间:
2018-07-01 14:55:40
阅读次数:
177
算法理解 首先找出A中的最小元素,并将其与A[1]进行交换,接着,找出次最小元素,与A[2]进行交换,对A中的前n-1个元素按此方式继续。 循环不变式 for循环的每次循环开始时,子数组A[1..i-1]由A中的元素组成,且已按序排列。 增长量级 最好情况与最坏情况均为 代码实现 - Python ...
分类:
编程语言 时间:
2018-06-24 21:07:28
阅读次数:
182
时间复杂度的计算 1. 计算最坏情况下执行语句的次数(含有n) 2. 去掉常数项, 只保留最高项, 去掉系数 3. 最后的结果一般是1, logn, n, nlogn, n^2, 2^n, n!, n^n 4. 时间复杂度所消耗的时间的顺序是: O(1) 0) 1. 使用循环链表实现 2. 使用队列 ...
分类:
其他好文 时间:
2018-06-23 01:44:05
阅读次数:
174
第八章《排序》 一、直接插入排序 //(1)时间复杂度分析: // ①最坏情况(整个序列逆序):O(n²) // ②最好情况(整个序列有序):O(n) // ③平均时间复杂度:O(n²) //(2)空间复杂度分析: // ①:O(1) 二、折半插入排序 三、希尔排序 四、冒泡排序 五、快速排序 六、 ...
分类:
编程语言 时间:
2018-06-20 22:31:56
阅读次数:
248
笔者按照目录刷题,对于每一道题,力争使用效率最高(时间复杂度最低)的算法,并全部通过C++代码实现AC。(文中计算的复杂度都是最坏情况复杂度) 因为考虑到大部分读者已经在Leetcode浏览过题目了,所以每道题都按照 解题思路 实现代码 问题描述 的顺序进行讲解。 (笔者目前已刷 40 题,已更新解 ...
分类:
编程语言 时间:
2018-06-13 23:33:13
阅读次数:
234
. 冒泡排序: 通过相邻的两个数的比较, 根据需要决定是否将两个数互换位置, 然后将比较往前(或往后)推进. 最简单的排序算法,直接上代码。 for(i=0;i<length-1;i++) for(j=i+1;j<length;j++) if(arrayVal[i]>arrayVal[j]) { / ...
分类:
编程语言 时间:
2018-06-08 20:31:36
阅读次数:
201