08 2019 档案
摘要:1 1. 最开始的大新闻被删除 2 2. 一个 naive 值为 x 的大新闻被添加到最前面 3 3. 长者询问从第 l 到第 r 个大新闻中 naive 值第 k 小的新闻的 naive 值 describe 看到区间的第k小值,是主席树。但1,2的修改操作有点chi_shi,仔细分析。发现1,2
阅读全文
摘要:第一眼,每个格子取决于和他相临的格子,直接枚举O(nm),这么水?!! 第二眼,没那么简单,要找到类似水池的东西,这个池子的边界高度的min才是此格子的高度。为了保证时间复杂度,希望能尽量找到一个格子能被覆盖的最大池子,这样能尽可能地覆盖到别的格子,能近似到一次遍历就出来了,基本O(nm)。 然后。
阅读全文
摘要:1 新元件的编号等于融合之前元件的总个数加一。当然,参与融合的 K个元件融合之后依然存在,并且每个元件至多参与一次融合。 2 由于元件的容量有限,Eddie 没有能力唤醒 Hobo 全部的回忆,所以他会用下列两种方式来融合元件: 3 4 集合的交:一段记忆存储在新的元件中,当且仅当这段记忆在参与融合
阅读全文
摘要:1 #include<cstdio> 2 #include<iostream> 3 #include<map> 4 #define MAXN 100010 5 #define ll long long 6 #define maxn(a,b) (a)>(b)?(a):(b) 7 #define min
阅读全文
摘要:之前学斜率优化的锅,凸包没学会,当时是不等式搞过去的,考试时妄想推出和u无关,只和祖先有关的不等式,失败。。。 先看式子(c[fa]-c[son])/(dep[son]-dep[fa]),看起来很别扭,尝试加负号,就变成了斜率(我们以dep为x轴,dep为y轴建坐标系),要求斜率最大,为下凸包, 这
阅读全文
摘要:之前是贪心看不粗来,现在二分也看不粗来了,QAQ。。。 审题清楚,别没看懂题就忙着暴搜,小w不一定走整点,可以走直线 其实,看到就应该想到二分了 那么其实二分的答案是作为每个点的半径以圆的形式出现的,一个答案是否成立,看这些障碍圆建出来后,是否还能从左到右联通,那其实是看障碍组成的边界线是否能联通上
阅读全文
摘要:缩边很强,主要是方案数比较难搞,因为两条路不同有且仅当走过的空格不同,那么我们应该消除实际边权为0的影响。 首先,假设有一个集合全是1点,并且可以互相间接或直接到达,那么一条路径伸到此点集中没必要边权为0的在里面绕,不管怎么绕都是一种情况。缩点解决。 其次,只有缩点真的可以吗, 考虑一张简单的图,3
阅读全文
摘要:void tarjan(int u){ dfn[u]=low[u]=++num; stack[++top]=u; instack[u]=true; for(int i=hd[u];i;i=bl[i].nt){ if(!dfn[bl[i].to]){ tarjan(bl[i].to); low[u]=minn(low[u],low[bl[i].to]); } else if(instack[bl[i
阅读全文
摘要:int dist[MAXN]; bool vis[MAXN]; priority_queue >dd; void dij(){ memset(vis,0,sizeof(vis)); memset(dist,0x7f,sizeof(dist)); dist[1]=0; dd.push(make_pair(0,1)); while(!dd.empty()){ int ltop=dd.t...
阅读全文
摘要:纪念oi路上第一颗kd-tree Hide and Seek 说说主要思想,考虑二叉搜索树来统计答案,玄学乱搞的地方就是减枝了。通过不断换维(不一定一直换,只要保证时间空间都尽量优就行),用<algorithm>库中的nth_element来找到中位数式的元素,此元素就是二叉搜索树对应的元素。最大值
阅读全文
摘要:碰到题面就回忆起线段树专题的排序,然而模完样例发现思路无关。然后又想到splay里的文艺平衡树,然而那个是区间翻转。草草的敲了快排,发现自己可以码归并比比速度(自己sb一样,明明都是O(n*logn)),然后kx地拍了一整场考试,速度都差不多。正解是桶排+线段树优化。考虑桶排,在原专题中的排序一题中
阅读全文

浙公网安备 33010602011771号