上一页 1 2 3 4 5 6 7 8 ··· 29 下一页
摘要: https://www.luogu.org/problem/P2146 继续重链剖分。 这里好像很好懂,每次安装软件就区间改值赋值整个路径是1,然后比较前后的sum值变化就可以了。事实上后一次的sum值必定是dep。卸载的话,依赖它的都没了,相当于清空整棵子树。 cpp include define 阅读全文
posted @ 2019-08-07 01:29 韵意 阅读(147) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problem/P4114 维护边权的话,用深度大的点表示这条边(可以遍历一边边询问两端深度,这样不需要修改dfs1,也可以在dfs1的时候向下走的同时把边权拷贝进深度大的点。),然后在链上问的时候,最后一次问的左端点要+1(小心左右端点原本重合)。 要注 阅读全文
posted @ 2019-08-06 23:48 韵意 阅读(177) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/297 一般的树剖是关于点权的,但是突发奇想好像边权也是一样的。做一些小改动。 cpp include define lc (o 1; if(ql = m + 1) update(rc, m + 1, r, ql, qr, v); pushup(o); } 阅读全文
posted @ 2019-08-06 22:09 韵意 阅读(170) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problem/P3384 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最 阅读全文
posted @ 2019-08-06 16:01 韵意 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 不会,先抄抄看。 来自oiwiki 我们先给出一些定义: fa 表示节点 在树上的父亲。 dep 表示节点 在树上的深度。 siz 表示节点 的子树的节点个数。 son 表示节点 的 重儿子 。 top 表示节点 所在 重链 的顶部节点(深度最小)。 tid 表示节点 的 时间戳 ,也是其在线段树中 阅读全文
posted @ 2019-08-06 15:59 韵意 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 来自叉姐 cpp struct CenterTree { int n; int ans; int siz; int son[maxn]; void dfs(int u, int pa) { son[u] = 1; int res = 0; for (int i = head[u]; ~i; i = 阅读全文
posted @ 2019-08-06 15:40 韵意 阅读(115) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/274 首先要判断是一颗树,并且找出树的直径。 是一棵树,首先边恰好有n 1条,其次要连通,这两个条件已经充分了,当然判环可以加速。 两次dfs找出直径,一边叫做L,另一边叫做R。(第一次写这个) 然后树形dp。 规定其中一个叶子作为树根。然后fx表示从x 阅读全文
posted @ 2019-08-06 14:14 韵意 阅读(168) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/31 还是不知道为什么RE了。的确非常玄学。 重构之后就没问题了。果然写的越复杂,分的情况越乱就越容易找不到bug。 cpp include using namespace std; typedef long long ll; int cnt[15]; i 阅读全文
posted @ 2019-08-06 14:07 韵意 阅读(155) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/153 其实不需要用线段树,只关心相邻元素的差,像神仙那样用差分就可以O1维护的。 但是我偏要用。 交之前写的那个,注意没有st本身的线段树只有lazy标记,每次必须先query才能得到真正的a数组,反正也就一点点常数干脆都query算了。 一开始少考虑一 阅读全文
posted @ 2019-08-06 00:56 韵意 阅读(130) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/38 要求是2016的倍数,把每个数分解成有2016的倍数和余数,两数余数的乘积是2016的倍数,则原数的乘积也是2016的倍数。 阅读全文
posted @ 2019-08-05 21:58 韵意 阅读(117) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/77 METO说是单点更新线段树。要记录哪些点不用再更新,不太清楚具体是要怎么实现? 一个类似的想法是把n个点建一棵平衡树,每次节点变成0之后从树上移除,至多变化30n次,移除的复杂度应该比30nlogn略小一些,5e7左右。 每次更新区间的时候,在树上找 阅读全文
posted @ 2019-08-05 11:16 韵意 阅读(137) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/37 一开始想到要根号分块预处理,但是不太懂具体怎么写。想不到如此暴力。 cpp include using namespace std; typedef long long ll; const int MAXN = 300000; //预留长出来的600 阅读全文
posted @ 2019-08-04 15:58 韵意 阅读(135) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/142 但是洲阁筛打表还是超时了,打的表不够长吧,在51nod上面要跑5s。要是快10倍得要密1000倍,根本打不出来(时间意义)。 暴力check要找的质数是不是要的那个。 cpp include typedef long long ll; using 阅读全文
posted @ 2019-08-04 13:50 韵意 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 原来历史上1582年10月4日的下一天是1582年10月15日; cpp include using namespace std; typedef long long ll; struct Date { int y, m, d; Date(int y=0,int m=0,int d=0):y(y), 阅读全文
posted @ 2019-08-04 13:18 韵意 阅读(214) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/11 T了好多次,还想用mutimap暴力分解每个数的质因数。后来记录每个数的最小质因子过了。 cpp include using namespace std; typedef long long ll; int n, m, MOD; const int 阅读全文
posted @ 2019-08-04 05:30 韵意 阅读(192) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 29 下一页