随笔分类 - 生活-OI
摘要:题目链接:http://www.wikioi.com/problem/1296/算法:Splay这是非常经典的一道题目,用Splay树来维护营业额,每天的最小波动值就等于 min{树根-树根的前驱, 树根的后继-树根)所以用Splay来维护PS: 本题数据有问题,所以当空行时,值为0========...
阅读全文
摘要:题目链接:http://www.wikioi.com/problem/1285/算法:Splay刚开始看到这题,就注意到特征abs了,并且数据n_using namespace std;#define F(rt) rt-> pa#define K(rt) rt-> key#define CH(rt,...
阅读全文
摘要:废话不说,有篇论文可供参考:杨思雨:《伸展树的基本操作与应用》Splay的好处可以快速分裂和合并。===============================14.07.26更新=============================实在看不惯那充满bug的指针树了!动不动就re!动不动就re!...
阅读全文
摘要:老旧的treap(无rank无select)#include #include #include using namespace std;#define NEW(d) new treap(d)struct treap { treap* ch[2]; int key, s; treap() : key...
阅读全文
摘要:二叉查找树递归定义:二叉查找树是空树或不是空树二叉查找树的左二叉查找树的值一定小于二叉查找树的值或左二叉查找树为空树二叉查找树的右二叉查找树的值一定大于二叉查找树的值或右二叉查找树为空树不维护父亲域的,坑爹啊。放上代码:#include #include using namespace std;#d...
阅读全文
摘要:题目链接:http://www.wikioi.com/problem/1282/算法:线段树(名次树)说明在代码里有了,直接上代码。#include using namespace std;#define lson l, m, rt > 1#define lc rt << 1#define rc r...
阅读全文
摘要:题目链接http://www.wikioi.com/problem/1217/算法:二分答案(线段树可过wikioi数据)二分:http://www.wikioi.com/solution/list/1217/ (我不多阐述)不难看出这道题满足二分条件 所以我们对数据进行二分维护一个具有前缀和性质的...
阅读全文
摘要:最近寒假,就来学习了一下线段树,其实挺简单的。通过一个树状数组来维护线段树,在区间求和和单点更新只需要维护个sum的树状即可,sum[1]表示1为根的区间[1, n]的和因为是树状数组,就不用记他的区间,用左孩子 rt/2 和右孩子 rt/2+1 。这里不详细介绍,想仔细学的这里有http://ww...
阅读全文
摘要:归并排序又称合并排序,其核心是分治思想。分治法详细请看百度百科《算导》p20:分治法中的递归式是基于基本模式中的三个步骤的。如先前一样,设T(n)为一个规模为n的问题的运行时间。如果问题的规模足够地小,如n≤c(c为一个常量),则得到它的直接解的时间为常量,写作Θ(1)。假设我们把原问题分解成a个子...
阅读全文
摘要:常用的有3种算法,分别有不同的用途。暴力枚举 O(sqrt(n)) 常用于判断单个或少量数是否质数一般的线性筛 O(n^2) 常数挺小,常用于O(1)查找是否质数,但需要开O(n)大小的数组快速线性筛(欧拉筛) O(n),虽然代码表面上看起来时间复杂度并不是O(n)实现:暴力枚举代码:ok = 1;...
阅读全文
摘要:其实很好理解的,O(lg b)的时间复杂度,b是指数点我打开百科链接我就大概说一下。如果b = 11, 那么对应的二进制为1011,即答案11的二进制是101111 = 2³×1 + 2²×0 + 2¹×1 + 2º×1那么就刚好一一对应上代码(如果没有mod,数据很大,就要开高精度):unsige...
阅读全文
摘要:首先,这是我自己推出来的,O(n^2),常数巨大。所以无能为力优化!所以求此数列的公式!求优化!!!主要思想:要算b次的,那么就要先算b+1次的。首先,我用F(i, j)表示杨辉三角第i层第j个,即(a+b)^(i-1),i>1的展开各项系数第1层:1第2层:1 1 ((a+b)^1)第3层...
阅读全文
摘要:题目链接算法:辗转相除(欧几里得)gcd(a, b)是a和b最小公倍数, lcm(a, b)是a和b的最大公倍数gcd(a, b) == gcd(b, a%b)时间复杂度:O(lgb)具体证明很多的,百度即可。代码:int gcd(int a, int b){return (b?gcd(b, a%b...
阅读全文
摘要:题目链接算法:DFS刚开始卡了我一下,我竟然傻到用二维来放皇后= =。导致一直TLE。。。。其实用1维就行了的,下标为行(列),值为列(行)我是用下标为列做的。上代码#include using namespace std;int n, ans = 0;int map[14];void dfs(in...
阅读全文
摘要:题目链接算法:DFS刚开始卡了一下,但后面想了想,于是放上代码:#include using namespace std;bool map[9][9];int c[9]; //随便命名四种颜色int ans = 0, N;//依次枚举每个节点,来试与前面的节点是否有重合的,没有就下一层void df...
阅读全文
摘要:题目链接算法:DFS+考你阅题题目描述:单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为...
阅读全文
摘要:题目链接算法:BFS14.01.02 PS:本人再次脑残,BFS又是写得那么脓肿,突然发现我原来什么搜索都是不会的呀。。//2014-02-05已更新*******************************2013-10-15*******************************题目描...
阅读全文
摘要:题目链接算法:DFS+剪枝14.01.02 PS:递推应该也可以的,改天看看刚开始最容易想到的是朴素搜索#include using namespace std;int n, m, X, Y;int ans = 0;void dfs(int i, int j){ if(i == 0 && j == ...
阅读全文
摘要:题目链接算法:BFS//2014-02-05更新*******************************2013-10-15*******************************PS:被卡过2天。日期:2013-10-14 ~ 2013-10-15 17:28:21此题卡了我一天,原因...
阅读全文
摘要:题目链接算法:Tarjan+dfs(最短路的都行,判连通而已)先了解一下什么是TarjanTarjan算法用于求出图中所有的强连通分量。转自NOCOW:点击打开链接====================================================================...
阅读全文

浙公网安备 33010602011771号