P3924 康娜的线段树 看起来$O(nlogn)$可过其实由于巨大常数是无法通过的 $O(nlogn)$:70pts 我们手玩样例发现 线段树上某个节点的期望值$f[o]=(f[lc]+f[rc])/2+sum[o]$ $s[o]$表示该节点代表的区间和。 每次$Add(l,r,x)$时,每个x对 ...
分类:
其他好文 时间:
2019-03-30 01:09:41
阅读次数:
160
LIS的nlogn的优化:LIS的优化说白了其实是贪心算法,比如说让你求一个最长上升子序列把,一起走一遍。 比如说(4, 2, 3, 1, 2,3,5)这个序列,求他的最长上升子序列,那么来看,如果求最长的上升序列,那么按照贪心,应该最可能的让该序列的元素整体变小,以便可以加入更多的元素。现在开辟一 ...
分类:
编程语言 时间:
2019-03-29 23:42:35
阅读次数:
202
好梗 求方程的解。n个可以奇数可以偶数,m个必须是偶数 两种方法: 都是O(nlogn)logn是LUCAS定理 法一: 有奇数有偶数,如果都是偶数,那么可以直接除以二然后组合数学 所以枚举有几个奇数! 法二: 简单粗暴考虑生成函数: $\frac{1}{(1-x)^n} * \frac{1}{(1 ...
分类:
其他好文 时间:
2019-03-27 19:43:36
阅读次数:
137
有这样一道排序题:数组里有20个随机数,取值范围为从0到10,要求用最快的速度把这20个整数从小到大进行排序。 第一时间你可能会想使用快速排序,因为快排的时间复杂度只有O(nlogn)。但是这种方法还是不够快,有没有比O(nlogn)更快的排序方法呢?你可能会有疑问:O(nlogn)已经是最快的排序 ...
分类:
编程语言 时间:
2019-03-27 00:01:26
阅读次数:
245
什么是动态规划: 1. 通常用于求解某种具有最优性质的问题 1. 有许多可行解,须从中 挑出一个最优的 1. 基本思想是将问题 分解成若干个子问题,先解决子问题,合并后得到原问题的解 1. 但是单纯分解,产生子问题太多,有些被重复计算 1. 故可以使用一个表 记录子问题结果 (动规的基本思路) 典型 ...
分类:
其他好文 时间:
2019-03-25 19:08:13
阅读次数:
162
/* 查询区间众数,要求强制在线 设有T个块 1.众数只可能在大块[L,R]里或者两端[l,L) (R,r]里出现 2.大块的众数只要预处理打表一下即可,复杂度n*T(这样的区间有T*T个) 3.两端的众数需要枚举每个元素,然后查询这个元素在区间[l,r]里出现的次数 用一个vector记录每个值出... ...
分类:
其他好文 时间:
2019-03-24 09:58:52
阅读次数:
203
题目大意:求 $$\sum\limits_{i=2}^n\phi(i)$$ 题解:利用与埃筛类似的操作,可在 $O(nlogn)$ 时间求出结果。 代码如下 cpp include using namespace std; const int maxn=3010; int kase,n,phi[ma ...
分类:
其他好文 时间:
2019-03-17 23:15:08
阅读次数:
134
常见时间复杂度 执行次数函数举例 | 阶 | 非正式术语 | | 12 | O(1) |常数阶 2n+3 | O(n) | 线性阶 3n2+2n+1 | O(n2) | 平方阶 5log2n+20 | O(logn) | 对数阶 2n+3nlog2n+19 | O(nlogn) | nlogn阶 6 ...
分类:
其他好文 时间:
2019-03-17 01:00:27
阅读次数:
181
1、原理 分为三个阶段: -Divide:整个问题划分成多个子问题 -Conquer:求解各子问题的解 -Merge:合并子问题的解,形成原始问题的解 2、示例 (1)整数乘法 输入:n位二进制整数X,Y 输出:X、Y的乘积 通常计算X*Y时间复杂性是O(n2),现给出一个时间复杂性为O(n1.59 ...
分类:
编程语言 时间:
2019-03-16 16:52:21
阅读次数:
258