摘要: 利用并查集按秩合并,保存每个点合并的时间; 求时间时,就一直跳u=fa[u],并记录路径上时间的最大值,代表最后一次合并的时间; 因为树高是$log$的,所以时间复杂度是$\mathcal{O}(mlogn)$ 阅读全文
posted @ 2019-04-17 23:56 LuitaryiJack 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 反向操作,先把所有的标记都打上(记得统计标记的数目),然后依次撤销,合并到自己的上一个点pre,即fa[u]=getf(pre[u]) 2019.04.16 阅读全文
posted @ 2019-04-17 23:51 LuitaryiJack 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 就是板子、、、 节点中维护的值,就是1-i之间这个区间内出现了数的次数(权值线段树?雾)。然后当我们查询的时候,就是利用到了前缀和的思想,拿左端点那棵树和右端点一减~ 更新的时候需要新开的点就开,不需要的就连到原来的点上去,相当于更新一条链。这样复杂度是nlogn的。 好想大佬们都把根作为实参转进去 阅读全文
posted @ 2019-04-17 23:47 LuitaryiJack 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 又一次做了这道题,感慨万千。 记得寒假时,被cmd2001点起来讲这道题,胡言乱语。。受尽鄙视(现在也是好吗)。。后来下课想A掉,可是3天下来总是错。。。后来抄了分题解就咕咕了。。。 今天老师留了这道题,想起往事不堪回首。。于是决定做一下。。结果一次A了 (???) 先把所有相等条件的合并,然后拿不 阅读全文
posted @ 2019-04-16 19:16 LuitaryiJack 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 今天想做做图论,于是点开了这道题。。。。(是二分图染色然而我没看出来) 四种操作及条件: 1. s1.push() 需满足 待push的元素小于栈顶 && { 若在原序列中,待push元素的后面存在一个比 待push元素大 且比 s2.top() 大的元素,记为a ,那么显然在a被push以前,待p 阅读全文
posted @ 2019-04-15 16:18 LuitaryiJack 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 先二分答案,再跑最短路,跑的时候遇到 过路费超过二分的答案的 就不拿他更新最短路 2019.04.14 阅读全文
posted @ 2019-04-14 21:34 LuitaryiJack 阅读(106) 评论(0) 推荐(1) 编辑
摘要: 刚学了匈牙利正好练练手(我不会说一开始我写错了)(怕不是寒假就讲了可是我不会) 把人看做左部点,床看作右部点 建图:(!!在校相当于有床,不在校相当于没有床 但是要来学校) 1.在校的 不走的人 自己和自己的床连边; 2.不在校的人或在校不回家的人 和 认识的 并且 在校的人 的床 连边; 于是统计 阅读全文
posted @ 2019-04-14 21:30 LuitaryiJack 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 想了半天式子。。。最后在邓大师的帮助下想出此题。。。。QWQ我还是太菜了 对于一个非割点,ans+=2*(n-1); 对于一个割点,ans+= 2019.04.12 阅读全文
posted @ 2019-04-12 16:18 LuitaryiJack 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 辣鸡错误:把dfs和ldfs搞混。。。QAQ 题意:给定一个无向图,然后查询q次,求每次查询就在图上增加一条边,求剩余割边的个数。 先把边双缩点,然后预处理出LCA的倍增数组; 然后加边时,从u往上跳,把所有u到LCA(u,v)路径上割边去掉,即 --ans;v同理; 而向上跳的时候可以用并查集,把 阅读全文
posted @ 2019-04-12 14:15 LuitaryiJack 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 又来了个维护方差的线段树。。。。 大致推导过程(字丑多包涵QAQ) 注意取模时要加一些100000007防止出现负数。。 也可树状数组,就不多说了(自己没写)(怕是树状数组更易写?) 2019.04.12 阅读全文
posted @ 2019-04-12 00:30 LuitaryiJack 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 块内按右端点sort,块外按左端点sort 话说我刚开始这么修改。。。 十分暴力?没事不影响复杂度。。 后来看题解发现可以改成这样 十分简练?我数学太菜了。。。 2019.04.12 阅读全文
posted @ 2019-04-12 00:14 LuitaryiJack 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 欧拉回路。 入度为奇数的点,搜他。 最好邻接矩阵。。。 2019.04.11 阅读全文
posted @ 2019-04-11 18:49 LuitaryiJack 阅读(155) 评论(0) 推荐(0) 编辑
摘要: %%%暴搜出奇迹%%%@SiriusRen 其实我刚开始题读错了,才导致我写图论。。。 spfa跑最短路,开一个node记录状态(pair当然滋磁):所在楼层和槽的位置 以层数为1,槽在0的位置 为初始状态并进队,向每一个合法位置扩展,跑spfa,直到收敛。 2019.04.11 阅读全文
posted @ 2019-04-11 00:43 LuitaryiJack 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 考试时先拿vector瞎搞不等信息,又没离散化,结果好像MLE;后来想起课上讲过用set维护,就开始瞎搞迭代器。。。QWQ我太菜了。。 用并查集维护相等信息,用set记录不相等的信息: 如果要求变量不等,若不和并查集矛盾,就拿set互相记录一下,YES;矛盾就NO 如果要求变量相等, 1.x记录的不 阅读全文
posted @ 2019-04-11 00:36 LuitaryiJack 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 就是个区间DP。。。考试时想了很久。。。 [ i , j ]至少要涂f [ i ] [ j ] 次颜料,于是两个端点相等,直接忽略掉一个取min 否则区间DP,枚举分割点 2019.04.11 阅读全文
posted @ 2019-04-11 00:25 LuitaryiJack 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 因为开根号能使数字减小得非常快 所以开不了几次(6次?)很大的数就会变成1..... 所以我们可以维护区间最大值,若最大值>1,则继续递归子树,暴力修改叶节点,否则直接return (好像也可以维护区间被开方的次数,但我不会。。。QAQ) upd 2019.06.15 可以用树状数组做,如果这个数已 阅读全文
posted @ 2019-04-11 00:19 LuitaryiJack 阅读(141) 评论(0) 推荐(0) 编辑
摘要: https://www.cnblogs.com/Jackpei/p/10680710.html 阅读全文
posted @ 2019-04-10 00:00 LuitaryiJack 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 原题luogu 其实难就难在如何合并区间信息(但是我记得有学长讲过) l(tr)表示包含左端点的最大子段和,r(tr)表示包含右端点的最大子段和,mx(tr)表示该区间的最大子段和,sum(tr)表示该区间的总和 ls表示左儿子,rs表示右儿子 代码: 2019.04.09 阅读全文
posted @ 2019-04-09 23:59 LuitaryiJack 阅读(239) 评论(2) 推荐(0) 编辑
摘要: 好吧我太菜了又调了一晚上。。。QAQ 先跑出最小生成树,标记树边,再用树上倍增的思路,预处理出: f[u][i] :距离u为2^i的祖先 h[u][i][0/1] :距u点在2^i范围内的最长边和次长边 然后枚举每一条非树边(u,v),会与原先的最小生成树构成一个环,而之前预处理出的数据可以快速找到 阅读全文
posted @ 2019-04-09 00:07 LuitaryiJack 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 贪它,再大力DP(话说觉得此题简单的真的是大佬QAQ)我想了两天。。。QWQ 贪心:吃饭慢的先打饭(不太会证。。。) DP:f[i][j]表示前i个人,在1号窗口打饭的总时间时j,的最短时间 确定i的时候,通过j,可以算出在二号窗口打饭的总时间。。 所以有: 第i个人在1号窗口:if(j>=a[i] 阅读全文
posted @ 2019-04-08 01:07 LuitaryiJack 阅读(208) 评论(0) 推荐(0) 编辑