随笔分类 - 知识汇总
摘要:其余 1.倍增可以快速求静态区间信息。 2.区间操作的数据结构考虑线段树,要思考如何优化信息 3.有点思路时先想暴力,然后一点点优化复杂度,相信自己场上除了水题外是有时间也有能力再做出来一道的。 4.想好思路时先打爆暴力,可以让思路在脑子里在思考一下,不会写一半乱了,正解错的时候可以对拍,打不完了,
阅读全文
摘要:写的不好别D啊,算是一些知识的归纳(虽然也是看的别人的学的吧) 群论 仙姑 置换 置换与排列 对于一个集合 \(D\) ,其大小为 \(|D|\),而排列是指这 \(|D|\) 个元素按照某种规定按一定顺序进行重新组成。而置换是指对这 \(|D|\) 个元素重新排列,不同元素之间交换位置,从而形成新
阅读全文
摘要:先写静态点分治,带修改的还没学,咕咕咕 点分治是用于处理树上简单路径统计的一种算法,利用分治的思想,对每一课子树统计答案,最后累加(看起来就很暴力) 所以我们要对其进行优化,将每一棵树按重心进行分割,再逐个处理子树,整体复杂度在 \(O(nlog_n)\) 左右 求重心 需要 \(dfs\) 一遍,
阅读全文
摘要:\(cdq\) 分治是一种离线分治算法,可以将动态问题改变为静态问题,不适用于强制在线。其实现时通常将需要进行的操作存进一个 结构体,然后对这些操作进行分治。 打 \(cdq\) 分治时一个直观的感受就是很好想思路,但就是不知道怎么打。。。 它一共有三个需要干的 1 找到范围中点 \(mid\) ,
阅读全文
摘要:序(感谢9G对本博客证明的大力支持) 前置知识 1:排列组合 2:多步容斥 \[\dbinom{n}{m}=\binom{n}{n-m}=\mathrm{C}_n^m=\mathrm{C}_n^{n-m} \]\[\dbinom{n}{m}*\binom{m}{s}=\dbinom{n}{s}*\b
阅读全文
摘要:lca lca简称最近公共祖先——简介在此,不过多赘述 黑科技——\(dfs\) 序求 \(lca\) 点击查看代码 struct LCA { int dfn[maxn],tot,deep[maxn],st[20][maxn]; int get(int x,int y) {return deep[x
阅读全文
摘要:公平组合游戏 两人进行公平博弈,只会出现你赢我输,你输我赢两种局面:定义必胜状态为先手必胜的状态,必败状态为先手必败的状态。 有以下三条结论 定理 1:没有后继状态的状态是必败状态。 定理 2:一个状态是必胜状态当且仅当存在至少一个必败状态为它的后继状态。 定理 3:一个状态是必败状态当且仅当它的所
阅读全文
摘要:就关于这步转换,场上手模了几组出来的,但没有详细证明。。。(刚证出来) 证明: 正着肯定不好推,所以这样用反证法。 我们假设存在 \(a,b(0<a<b<y)\) ,使得 \((ax\) \(mod\) \(y)\) \(=\) \((bx\) \(mod\) \(y)\) 所以有 \(ax \%
阅读全文
摘要:本博客为本人对树剖可解决题目的总结。。。 概念 1:\(fa[u]\) : \(u\) 的父亲 2:\(size[u]\) : \(u\) 节点 \(u\) 为子树的节点个数 3:\(dep[u]\) : \(u\) 节点的深度 4:\(wson[u]\) : \(u\) 节点的重儿子编号 5:\(
阅读全文
摘要:本人正在写树剖,结果线段树不会维护了,还是太菜了,然后就卡了半天。。。 这里以我卡的那题为解释 题目在此 这道题思路我自认为还是很板的, 操作1:安装的话就是输出本点深度减去它到根有几个1,再把这个点到根的链都变为1 操作2:删除就是先输出子树有多少个1,再全删了 我一直在想把每个节点都标为 \(1
阅读全文
摘要:琐记 这玩意是之前寒假集训时学二分图时被忽悠去学的,今天又回去复习了一下,想写篇总结。 其他的后面有时间再来填坑,先咕着。。。 最大流最小割定理 内容:任何一个网络的最大流量等于最小割中的边容量之和 这玩意看蓝书解释没咋懂,我自己感性理解了一下,有不对的各位指点一下啊 一定注意,网络流的图是有向无环
阅读全文
摘要:缩点 stack<int>q; void tarjan(int u) { pre[u]=low[u]=++cnt; q.push(u); vis[u]=1; for(int i=head[u];i;i=nxt[i]) { int y=to[i]; if(!pre[y]) { tarjan(y); l
阅读全文
摘要:树状数组 ——高效求前缀和 (直接放板子了。。) 下标 点击查看代码 int lowbit(int x){ return x&(-x); } 单点修改 点击查看代码 void add(int i,int k){ while(i<=n){ c[i]+=k; i+=lowbit(i); } } 求和 点
阅读全文
摘要:1:最短路 链式前向星; 点击查看代码 int head[maxn],to[maxn],nxt[maxn],val[maxn],tot; void add(int x,int y,int z) { to[++tot]=y; val[tot]=z; nxt[tot]=head[x]; head[x]=
阅读全文