随笔分类 - 生活-OI
摘要:概要:各种dfs时间戳。。全是tarjan(或加上他的小伙伴)无限膜拜tarjan orzzzzzzzzz技巧及注意:强连通分量是有向图,双连通分量是无向图。强连通分量找环时的决策和双连通的决策十分相似,但不完全相同。强连通分量在if(FF[v])后边的else if还要特判是否在栈里,即vis[v...
阅读全文
摘要:http://poj.org/problem?id=2942各种逗。。。。翻译白书上有;看了白书和网上的标程,学习了。。orz。双连通分量就是先找出割点,然后用个栈在找出割点前维护子树,最后如果这个是割点那么子树就都是双连通分量,然后本题求的是奇圈,那么就进行黑白染色,判断是否为奇圈即可。将不是奇圈...
阅读全文
摘要:http://poj.org/problem?id=1523太弱。。。too weak。。割点我都还要看书和看题解来写。。果然是写不出么。。割点就那样求,然后分量直接这个节点有多少子树就有子树个数+1个分量。还要注意root的特判。。sigh。。就是崩这里了。#include #include #i...
阅读全文
摘要:http://poj.org/problem?id=1094原来拓扑序可以这样做,原来一直sb的用白书上说的dfs。。。。。。。。。。。。拓扑序只要每次将入度为0的点加入栈,然后每次拓展维护入度即可。。我是个大sb,这种水题调了一早上。。#include #include #include #inc...
阅读全文
摘要:概要:这货很强大啊。isap和dinic都算很快的算法,目前貌似卡不了?spfa在费用流中找增广路。上下界的网络流可以用分离必要弧来做。应用:解决许多多约束最优化的问题。技巧及注意:网络流在于建模,但是首先得有个基础。上下界网络流:整体思想就是分离下界,将原边连成上界-下界,终点的界和+=这个下界,...
阅读全文
摘要:概要:状态、转移;最优子结构、无后效性。技巧及注意:dp就是纯经验+智商题在dp方程写出来后,一定要考虑边界!不要以为转移对了就行了!滚动数组的话一定要考虑好顺序!下标有时候可以灵活使用!比如mod意义下的dp,倍数什么、可到达性等题目都可以这样做。如果是线性序列的max{f[k]},k_<):最长...
阅读全文
摘要:概要:这货就考智商和胆量。技巧及注意:当需要找线性序列的最优方案时,我们可以考虑排序,但是排序的首要条件是:在考虑其中两个相邻的元素时,它们互相交换对其它无影响,且交换或不交换的情况能得到更优的解。例题:【BZOJ】1629: [Usaco2007 Demo]Cow Acrobats(贪心+排序)【...
阅读全文
摘要:概要:c++的stl是个神奇的东西,需要好好学习。技巧及注意:lower_bound是第一个大于等于要查找值upper_bound是第一个大于要查找的值stl中的容器中的比较几乎全都用"的含义实现小根堆。lower_bound也可以重载<,实现找到最后一个大于等于要查找值(二分的lis就是这么实现的...
阅读全文
摘要:概要:所谓大力出奇迹。技巧及注意:技巧太多。。否则为嘛出暴力题给你。。在一次cf比赛中Codeforces Round #266 (Div. 2),A、B题都是暴力QAQ,表示我是蒟蒻。。然后赛后膜拜了tourist的大腿,原来是暴力。总结起来就是,在只有2种互相约束(或许更多?)的答案时,我们可以...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3398以下牡牛为a,牝牛为b。学完排列计数后试着来写这题,“至少”一词可以给我们提示,我们可以枚举a为x头(x>1),然后算出对应的排列累计起来。对于x头a,首先我们先缩掉必要的k头牛(x-1)*k,然...
阅读全文
摘要:概要:平衡树大概是最常用的高级数据结构了,而treap用来进行一般的信息维护,splay用来进行高级的信息维护(比如区间操作、lct等)(map、set党自重QAQ)。技巧及注意:细节十分多。在对打tag的数据结构中,要操作的点的祖先一定要把tag都要下放完才行!这点非常重要!treap中如果设小根...
阅读全文
摘要:概要:就是用来维护区间信息,然后各种秀智商游戏。技巧及注意:一定要注意标记的下放的顺序及影响!考虑是否有叠加或相互影响的可能!和平衡树相同,在操作每一个节点时,必须保证祖先的tag已经完全下放。size值的活用:主席树就是这样来的。支持区间加减,例题和模板:主席树01(就是更新和不更新等这种对立操作...
阅读全文
摘要:概要:对于维护信息具有单调性的性质或者问题可以转化为具有单调性质的模型的题,我们可以考虑用单调栈或单调队列。技巧及注意:技巧很多,只要能将问题转化为单调性问题,就好解决了。当维护固定长度的单调区间,我们考虑用单调队列,如【BZOJ】3314: [Usaco2013 Nov]Crowded Cows(...
阅读全文
摘要:概要:判重的时候可以用手写hash,也可以用stl中的map,手写hash的好处是快,解决冲突的方案较好,map慢。但是手写hash要求的空间高,而且有时处理得不好的话会wa。注意及技巧:注意的是,hash的函数一定要写好,但是写好又爆空间。一般采用元素个数作为基数然后乘上递增的这个基数的幂作为权重...
阅读全文
摘要:概要:可以用匈牙利或者网络流(听说Dinic是O(sqrt(V)*E),isap我不知道,大概一样吧。)应用:最大匹配、最小点覆盖、最大独立集、最小路径覆盖、二分图完美匹配等。技巧及注意:匈牙利是O(nm)的,比网络流慢。KM比网络流慢。(还是写网络流吧。。。)一些知识:二分图在X集和Y集元素不同时...
阅读全文
摘要:复杂度:O(n*α(n)) 其中α(x),对于x=宇宙中原子数之和,α(x)不大于4 。(对于nocow里的复杂度我也是醉了)概要:并查集就是一个数组和一行话。应用:图的连通、集合操作、生成树的合并等技巧及注意:并查集是个好东西。维护区间+前缀和:对于一些连续的区间,我们要判断这些区间是否合法,带修...
阅读全文
摘要:概要:最短路是个神奇的东西,通过三角不等式,我们可以拓展出很多最短路的延伸。而求最短路的算法一般我用三种,dijkstra、spfa、floyd,第一个用于点少边多的,第一个用于点多边少的,第三个是多源最短路。应用:差分约束系统、一般约束条件、最短路等。技巧及注意:差分约束:根据三角不等式d(v)0...
阅读全文
摘要:算法:最小生成树的算法有:Prim(O(nlgn)),Kruskal(O(nlg**n)),Prim在某些场合很好用,某些场合必须用。。。Kruskal的话最快。。技巧及应用:当看到要求连通一个图的最小代价,显然最小生成树,例如【BZOJ】1601: [Usaco2008 Oct]灌水(kruska...
阅读全文
摘要:概要:在一些递推式中,我们发现好像不能在优化了(例如斐波那契数列普通递推是O(n)的),但是这个特殊的递推式我们可以用矩阵来实现O(logn)(忽略了矩阵自身计算的O(n^3))。而矩阵乘法运算是a[i, k]*b[k, j]=c[i, j],从这个式子可看出朴素是n^3的(当然那些神算法我不会),...
阅读全文
摘要:概要:在dfs中,如果答案的深度很小但是却很宽,而且bfs还不一定好做的情况下,我们就综合bfs的优点,结合dfs的思想,进行有限制的dfs。在这里A*、IDA*和迭代深搜都是对dfs的优化,因此放到一块小结。A*的概念主意在于估计函数,f(n)=g(n)+h(n),f(n)是估计函数,g(n)是n...
阅读全文

浙公网安备 33010602011771号