随笔分类 - 洛谷
摘要:挺有趣的一道题。 显然,我们如果知道某个位置的奇偶性,我们就能知道某个位置是否有小球(题目说明一个位置最多只有一个小球)。 我们有两种方法可以知道位置 的奇偶性,直接询问位置 的奇偶性或者间接询问。 所谓的间接询问就比如先问 再问
阅读全文
摘要:P5459 [BJOI2016]回转寿司 不会cdq的看这里:cdq分治:从分治到套娃 转化为求 j<i,L<=sum[i]-sum[j-1]<=R的对数的问题,其中sum为前缀和 经典的三维偏序,当然也可以分治后排序再用队列来维护。 你也可以试试直接用数据结构来做(话说cdq不就是把数据结构转成了
阅读全文
摘要:KDtree模板题 不会的看这里 本题离线的话就是裸的cdq分治 强制在线那就按维分割,加入新点的话类似于建树过程,同时记录一下点的范围,以便询问的时候好剪枝 为了防止出题人毒瘤(比如让你建的树成了一条链),你可以每过一段时间重构一下这棵树。 代码虽长,但很好写 #include<algorithm
阅读全文
摘要:模拟退火模板题,不会可以看这里 一个位置到所有点的dis*weight的和越小越好 #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<ctime> #define DB long double
阅读全文
摘要:题目链接 写这道题最重要的是条理清晰。 除了阳光长跑外,其他的都能在读入的时候处理掉。 处理阳光长跑最头疼的就是处理时间。 把时间单位都变成秒就好啦。 我们算出从2017年1月1日0点到这时刻有多少秒就行啦。 代码注释很详细,具体看代码吧。 #include<algorithm> #include<
阅读全文
摘要:首先我们可以二分答案。然后转变为判断 以内不讨厌的数和 的关系。 以内不讨厌的数= 以内讨厌的数 对于讨厌的数我们可以枚举 ,看 会造成多少个讨厌的数,显然是 $\displaystyle \left \lfloor
阅读全文
摘要:两种形态都对经过的路程有限制,我们可以联想到克鲁斯卡尔重构树。 我们考虑将点权转化为边权,因为我们走这条边的话两个端点都要符合条件,所以人形态是边权为边的两个端点的较小值,狼形态相反。 人形态时要建一个最大生成树,狼形态相反 然后我们就可以知道人形态时起点可以到达哪些点,狼形态时哪些点可以到达终点。
阅读全文
摘要:考虑每个小区间的的贡献,显然是只用到了覆盖了这个小区间的值里面第 大。 倘若我们已经知道了覆盖当前区间的值都有多少个,我们就可以在线段树上二分找第 大。 现在我们并不知道,我们可以用差分+线段树上修改的方法来完成对当前 值的出现次数 的维护。
阅读全文
摘要:之前做过一到类似的,当时没写题解,今天来补上。 首先我们发现圆没有交,所以两个圆只有包含和相离两种关系。 我们考虑用扫描线来处理,随着扫描线的推移,和上面的圆的交点 一直都在 和下面的圆的交点的上面,可以用 来维护相对位置 怎么确定一个圆应该是加还是减?我们将圆拆分成上半圆和下半圆,将上
阅读全文
摘要:我们观察题目后发现这很明显是一道有关最短路的题,首先可以无脑打一个最短路模板上去。 36分
阅读全文
摘要:首先将区间按照长度排序。用尺取法的思想我们维护双指针来扫描。 左右端点确定后花费就确定了,我们要做的就是看又没有一个位置被覆盖了 次。 我们可以将两个指针之间的区间都让其在数轴上 ,看最大值来判断当前是否合法。 转变为 .区间加 .询问整体最大值。 用线段树维护就好
阅读全文
摘要:题目不难,但是思路巧妙。 我们求出差分数组后,就变成了这三种操作 1.一个数加一 2.一个数减一 3.一个数加一的同时一个数减一 我们要让 ~ 变成 ,设所有整数的和为 ,负数的和的绝对值为 ,则最少操作数为 我们 $min(s
阅读全文
摘要:对于一段区间查询最大异或值,我们可以用 可持久化0/1Trie树 来维护。 对于一个点的子树,它们的 序是一段连续的区间。 对于一条路经,我们拆成两个端点分别到达 的两条路径,它们的 是连续的。 我们分别建出来 1.以 序为外层的树 2.以
阅读全文
摘要:wqs二分常用来解决这样的问题:在某个限定条件 下,求最大/最小值。 wqs二分就是先不管条件 ,看这时取到最值的情况下条件满足的怎么样,然后对和这个条件有关,能影响到最值的部分二分加权,再看满足的怎么样。 这道题的话我们先二分一个权值 ,让和 相连的边都加上 $
阅读全文