随笔分类 -  模板

摘要:Jisoo 这是一种叫线段树合并的东西。 为了简化,我们需要动态开点。 并且一开始为每一个节点建一个线段树,当然是动态开点的 然后合并就行了,相同的线段树节点加起来,只有一个有的就返回另一个 记一个根,并且并查集一下。 #include<cstdio> #include<iostream> #inc 阅读全文
posted @ 2021-11-07 19:23 Simex 阅读(22) 评论(0) 推荐(0) 编辑
摘要:AC自动机 这些东西还是交给wiki 模板 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<stack> #include<queue> #include 阅读全文
posted @ 2021-11-05 23:09 Simex 阅读(30) 评论(0) 推荐(0) 编辑
摘要:可持久化线段树 如果我们要维护一个可持续的,支持查询历史版本的数组该怎么做 给每一个版本建立一颗线段树?那太占空间了。 我们可以不同版本公用一些节点,对于每个版本,只把和上一个版本不一样的部分建立线段树的新节点。这样我们就有了可持久化线段树。 Lisa 需要的前置知识:动态开点。 依照上面的思想,这 阅读全文
posted @ 2021-11-04 12:40 Simex 阅读(32) 评论(0) 推荐(0) 编辑
摘要:左偏树 一种可以合并的堆 前置知识 dist 对于一棵二叉树,我们定义 外节点 为左儿子或右儿子为空的节点,定义一个外节点的 为 ,一个不是外节点的节点 为其到子树中最近的外节点的距离加一。空节点的dist为0。 那么左偏树就是一颗满足堆的性质的二叉树,它的左儿子的dist大于等于右儿子的 核心 核 阅读全文
posted @ 2021-11-04 09:50 Simex 阅读(100) 评论(0) 推荐(0) 编辑
摘要:左偏树 一种可以合并的堆 前置知识 dist 对于一棵二叉树,我们定义 外节点 为左儿子或右儿子为空的节点,定义一个外节点的 为 ,一个不是外节点的节点 为其到子树中最近的外节点的距离加一。空节点的dist为0。 那么左偏树就是一颗满足堆的性质的二叉树,它的左儿子的dist大于等于右儿子的 核心 核 阅读全文
posted @ 2021-11-03 23:15 Simex 阅读(25) 评论(0) 推荐(0) 编辑
摘要:Treap treap是啥,是一种平衡树,tree+heap 众所周知,二叉平衡树一旦退化,复杂度将会很可怕。 treap则给每一个节点附上了一个随机的值,然后利用旋转操作,让这个二叉搜索树同时也满足堆的性质。期望下可以达到O(nlogn)的复杂度了。 具体怎么实现呢 大部分的操作和一般的二叉 阅读全文
posted @ 2021-11-03 22:59 Simex 阅读(95) 评论(0) 推荐(0) 编辑
摘要:wqs二分时间 给定 个物品,我们需要在其中恰好选择 个,并且需要最大化收益。设对应的收益为 ,那么需要满足在最大化收益的前提下,每多选择一个物品,额外产生的收益是单调递减的,也就是 。同时,如果我们对物品的选择数量没有限制,即 不存在,那么我们应当能够快速地计算出最大的收益,以及达到最大的收益需要 阅读全文
posted @ 2021-11-02 14:29 Simex 阅读(238) 评论(0) 推荐(0) 编辑
摘要:jisoo 典型的CDQ分治 一维的时候比较就行了 二维的时候加一个数据结构,就像逆序对一样 三维的时候则需要,使用CDQ分治来解决了 首先把全局按照第一维从小到大排序,相同的按照第二维,还相同的按照第三维 然后开始从中间分开,分治。 显然这个过程位于 mid 两边内部的都会在自己的过程中被 阅读全文
posted @ 2021-11-02 12:27 Simex 阅读(33) 评论(0) 推荐(0) 编辑
摘要:jisoo 可以证明,一定只需要考虑需要翻转的边 如果一种合法方案,需要翻转不需要翻转的边,那么就必然有一个过程是把这条边翻转过来, 那么这一条边有两种可能,要不它连着偶数个由需要翻转的边组成的环,要不是有许多同样的此类不翻转边组成的环 对于以上两种可能,可以发现都会出现需要翻转的边连成环的可能。 阅读全文
posted @ 2021-09-18 21:47 Simex 阅读(82) 评论(0) 推荐(0) 编辑
摘要:Lisa 这要构建一个什么玩意 K进制haffum树 然后节点数不够咋办 加空节点‘ #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #define int long long using namespa 阅读全文
posted @ 2021-08-17 22:12 Simex 阅读(31) 评论(0) 推荐(0) 编辑
摘要:#include #include #include #include #include using namespace std; int n,p; double a[1000001]; int x,y,z; struct e{ int to; int v; int ne; }ed[1000001] 阅读全文
posted @ 2021-08-11 23:07 Simex 阅读(33) 评论(0) 推荐(0) 编辑
摘要:Lisa 显然会形成一个图的结构,显然这玩意极有可能出现环 那咋办呢 从每一怪兽出发似乎都可以形成一个子问题。 每一个问题都是用自己所能到达的怪兽的花费来更新自己,如果自己更新了,就有机会更新自己的父亲 显然不会一直更新下去,这个环是有极限的。 所以好像出现了一个类似于spfa的结构 就是首先每个点 阅读全文
posted @ 2021-08-09 22:20 Simex 阅读(37) 评论(0) 推荐(0) 编辑
摘要:Aimee 2-sat的模板题 显然根据题目所给内容,我们可以根据每一个菜的做法,推断出另一个菜的做法,然后连边 这样会出现一个个的环,这个环不能有矛盾 也就是满式和汉式不能同时被推出 #include<iostream> #include<cstdio> #include<cstring> #in 阅读全文
posted @ 2021-08-08 23:17 Simex 阅读(26) 评论(0) 推荐(0) 编辑
摘要:P3812 【模板】线性基 这是一道板子题 #include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; ll p[100]; ll ans; ll x; ll n; v 阅读全文
posted @ 2021-08-02 08:17 Simex 阅读(26) 评论(0) 推荐(0) 编辑
摘要:Jennie 素数不多,我们考虑素数就可以了 对于素数来说,能以他为gcd,那么肯定时它的倍数,且gcd(iprime,jprime)=1,那么我们先求出1n有多少个prime的倍数,然后取出两个互质的倍数,就是一个答案 这不就时ϕ()的干的好 阅读全文
posted @ 2021-07-29 23:55 Simex 阅读(22) 评论(0) 推荐(0) 编辑
摘要:Jinsoo 用更相减损术写的 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define int long long using namespace std; long long a,b,c; 阅读全文
posted @ 2021-07-28 20:42 Simex 阅读(50) 评论(0) 推荐(0) 编辑
摘要:Jisoo tarjan求割边 对于一条(u,v),如果他是割边,那么v子树中一定有一个点slows>dfnu 然后改造一下搜索函数 #include<iostream> #include<cstdio> #include<algorithm> #include<stack> using 阅读全文
posted @ 2021-07-27 23:36 Simex 阅读(34) 评论(0) 推荐(0) 编辑
摘要:jennie 树上dp求直径的模板 #include<iostream> #include<cstdio> #include<cstring> #include<vector> using namespace std; int n; vector<int> v[100001]; int x,y; i 阅读全文
posted @ 2021-07-25 20:41 Simex 阅读(30) 评论(0) 推荐(0) 编辑
摘要:Archie 树链刨分之后很显然就成了一条一条的链 那么用线段树维护一下就行了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,m,r,pp; s 阅读全文
posted @ 2021-07-21 20:32 Simex 阅读(39) 评论(0) 推荐(0) 编辑
摘要:Archie 练习一下树刨 只要记录一下到链顶的距离以及到父亲的距离就行了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,m; struct e 阅读全文
posted @ 2021-07-20 19:40 Simex 阅读(54) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示