【【dp】】 【树形dp】 大致分为两种(1)从上往下搜,(2)从下往上搜 法一:贪心 把无根树中的随便一个点单做根节点,然后从根节点出发做遍历,找到当前的最长链的终点,再从这个点开始再做一次bfs/dfs 法二:树形dp 枚举每棵数中经过根节点的最长链。 d[i] 以i为根节点的子树向下的最长链 ...
分类:
其他好文 时间:
2017-10-05 12:17:28
阅读次数:
140
【题意】给定n头牛和m对大小关系,求最坏情况下至少还需要比较几对奶牛的大小(在未确定顺序的奶牛对中随机比较) 【算法】floyd求传递闭包 【题解】可达说明大小已知,则不可达点对数量就是最少比较次数。 使用bitset优化传递闭包,复杂度O(n^3 /32)。 #include<cstdio> #i ...
分类:
其他好文 时间:
2017-09-27 10:11:46
阅读次数:
189
众所周知,猴子排序打破了排序算法$O(n\log_{2}{n})$的桎梏(雾),具体的话,显然最好情况一次成功就是$O(n)$,最坏情况那就$O(+\infty)$了。期望是多少呢?让我来推导一番(逃)。 首先,每次打乱序列和检测是否有序为$O(n)$,每次成功的概率为$\frac{1}{n!}$( ...
分类:
编程语言 时间:
2017-09-25 00:45:51
阅读次数:
231
在摊还分析中,通过求数据结构的一系列的操作的平均时间,来评价操作的代价。这样,即使这些操作中的某个单一操作的代价很高,也可以证明平均代价很低。摊还分析不涉及概率,它可以保证最坏情况下每个操作的平均性能。 摊还分析有三种常用的技术: 聚合分析,它确定n个操作的总代价的上界为T(n),所以每个操作的平均 ...
分类:
编程语言 时间:
2017-09-20 21:51:34
阅读次数:
140
n<=50000个点m<=150000的带边权DAG,保证1入度0,n出度0,其他点入度出度均不为0,求:从一号点开始到n,期间有可能K<=10次随机选边走,最坏情况下总边权多少。 没理解题意系列。。问了唐神T_T题目是说,这个牛已经知道会有这种情况,所以在除了K次剩下的时间里它会选最优方案走,而如 ...
分类:
其他好文 时间:
2017-09-12 22:03:36
阅读次数:
235
9/10/2017,简写一个封装好的二分查找,适用于C/C++ 正文如下: 最坏情况是a[1] or a[n] = k,假设需要二分m次,则有: n/2 n/4 n/8 ... n/(2^m) = 1; 得2^m = n,所以时间复杂度为O(lg(n)) 图解如下: (图片来源于CSDN博主皓皓松) ...
分类:
编程语言 时间:
2017-09-10 21:52:42
阅读次数:
259
题目大意: 给你一棵树,一开始每个点的权值都是0,要求支持一下三种操作: 1.路径加等差数列。 2.路径求和。 3.回到以前的某次操作。 强制在线。 思路: 树链剖分+主席树。 最坏情况下,n个点的树最多会被分成n-1个链, 这里不能每个点都开一个主席树,因为主席树中要存每个线段树的根结点编号,总共 ...
分类:
其他好文 时间:
2017-09-07 21:35:42
阅读次数:
275
分类: 1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序。 1、冒泡算法(bubble)- -属 ...
分类:
编程语言 时间:
2017-09-05 13:31:16
阅读次数:
210
算法select可以确认一个有n>1个不同元素的输入数组中第i小的元素。(如果n=1,则select只返回它的唯一输入数值作为第i小的元素。) 1.将输入数组的n个元素划分为n/5(向下取整)组,每组5个元素,则至多只有一组由剩下的n mod 5个元素组成。 2.寻找这n/5(向上取整)组中每一组的 ...
分类:
编程语言 时间:
2017-09-02 16:55:45
阅读次数:
194
若$k\leq 15$,那么可以设$d[i][S]$表示经过了$S$集合的边,现在位于$i$点的最短路。 可以用Dijkstra算法在$O(n^22^k)$时间内求出。 否则若$k>15$,那么最坏情况下,它们会形成一个团,将这$k$条边连上后,图中最多剩下$7$个连通块。 如果知道哪些边要走,哪些 ...
分类:
Web程序 时间:
2017-09-01 00:52:09
阅读次数:
248