随笔分类 -  数据结构

摘要:传送门 对题意的转化其实挺巧妙的。 可以看出来是在树上再加“附加边”,加了附加边的即形成环。形成环的定要删除一条主要边和一条附加边才能分为两部分。 如添加了附加边(x,y),相当于x到y的所有“主要边”被覆盖一次。 若第一步把被覆盖0次的主要边切断,第二步可任意切断一条附加边。 若第一步把被覆盖1次 阅读全文
posted @ 2021-09-08 16:21 yyys 阅读(72) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-10-07 20:58 yyys 阅读(0) 评论(0) 推荐(0)
摘要:先给一道题: [SNOI2017]炸弹 我们发现,一个炸弹可能会影响左右的一些炸弹,然后左右的炸弹又会去影响其他的炸弹。 最暴力的做法当然是向每一个会影响到的炸弹连边。 边会达到n^2,显然无法承受。 然后我们就可以用到一个叫做线段树优化建图的技巧 图片摘自洛谷题解~ 这样边数优化到nlog。 这就 阅读全文
posted @ 2019-10-07 07:39 yyys 阅读(437) 评论(2) 推荐(2)
该文被密码保护。
posted @ 2019-10-06 19:02 yyys 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-09-28 19:49 yyys 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-09-26 18:28 yyys 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-09-26 18:20 yyys 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-09-24 19:52 yyys 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-09-06 20:42 yyys 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-08-31 17:08 yyys 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-08-24 19:21 yyys 阅读(11) 评论(0) 推荐(0)
摘要:并查集 普通的并查集没有什么好说的,对于遇到的题目,我们主要是要把它抽象成并查集的模型,比如萌萌哒这道题就是一个对于模型的抽象,相同的标记其实就是一个并查集。 然后想说一下并查集的两种合并,一种是路径压缩,一种是按秩合并。 按秩合并更多是对于可撤销并查集(还没打过板子)和可持久化并查集 然后个人觉得 阅读全文
posted @ 2019-08-20 09:52 yyys 阅读(205) 评论(0) 推荐(0)
摘要:一道权限题 题面 描述农夫Byteasar买了一片n亩的土地,他要在这上面种草。 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘米。 Byteasar一共会进行m次收割,其中第i次收割在第d[i]天,并把所有高度大于等于b[i]的部分全部割去。Byteasar想知 阅读全文
posted @ 2019-08-20 09:41 yyys 阅读(378) 评论(0) 推荐(0)
摘要:传送门 三个操作 0:区间赋值基础操作,打标记就行。 1:查询了[l1​,r1]中1个数后,[l1​,r1]区间赋值基础操作,然后在[l0​,r0]区间修改,因为要求“脑洞治疗仪仅会尽量填补位置比较靠前的脑洞”,所以能改左子树就改左子树,再右子树。 2:区间查询最大值,因为是求最长连续0,所以代码里 阅读全文
posted @ 2019-08-20 09:40 yyys 阅读(253) 评论(0) 推荐(0)
摘要:传送门 镜像点思路 具体见这篇博客 i的信息存在i'里在2操作时就不会有影响 #include<bits/stdc++.h> #define N 200003 using namespace std; int read() { int x=0,f=1;char s=getchar(); while( 阅读全文
posted @ 2019-08-20 09:29 yyys 阅读(247) 评论(0) 推荐(0)
摘要:模板题 可持久化就用主席树实现,学习自这篇博客 #include<bits/stdc++.h> #define N 4000005 using namespace std; int read() { int x=0,f=1;char s=getchar(); while(s<'0'||s>'9'){ 阅读全文
posted @ 2019-08-17 22:57 yyys 阅读(131) 评论(0) 推荐(0)
摘要:传送门 练一下树剖的板子,运用一下时间倒流和下放边权的思想。 题中所谓“关键航线”其实就是桥。 删边操作桥不好维护,但如果是加边,每加一条边,两点作为端点的这条路径就都不再是桥 >考虑时间倒流。 从后往前,每删除一条边,现在就是加边,该路径上所有边都不是桥(打上标记)。 可以先求出一棵最小生成树(代 阅读全文
posted @ 2019-08-17 22:57 yyys 阅读(169) 评论(0) 推荐(0)
摘要:传送门 首先可以看出这是一道博弈论的题,我们考虑对于每一棵树求出sg。 存在这样两种情况: 1.去掉根,那么这棵树的sg是其所有点的sg异或和。 2.去掉子树中的一个点,那么这棵树的sg是其所有点的sg异或和再异或上这个点到根这条路径上的所有点sg。 对于第一种情况很好处理,而第二种情况暴力做法则是 阅读全文
posted @ 2019-08-13 17:51 yyys 阅读(222) 评论(0) 推荐(0)
摘要:传送门 说实话,这道题一开始我还真没想到是并查集。看到题目,第一个反应是暴力打标记,因为相同的一段的只需要找一次,打上标记后就意味着不会再对答案做出贡献。但这样显然是超时的对吧,所以就想着可不可以拿个啥数据结构来维护。虽然没有想出来。 先不说思想有没有什么bug,但感觉就算这样打,维护标记也是不好维 阅读全文
posted @ 2019-07-28 14:44 yyys 阅读(352) 评论(0) 推荐(0)
摘要:如果是学习的话,可以看一下这篇博客 LCT有一点类似于树链剖分,只不过是实链和虚链,然后可以不断变化。每一条实链用一个splay(深度为关键字)维护,splay还原出来就应该是一条由浅到深的链。 Splay的根的father是原树中链顶的父节点。特别的,原树根所在的Splay根节点的father为空 阅读全文
posted @ 2019-07-25 18:55 yyys 阅读(283) 评论(0) 推荐(0)