随笔分类 -  二分答案

摘要:传送门 自己想了一个结论,结果假了 求极值,而且答案有单调性,复杂度允许,应该想到要二分答案的。 答案只可能是树的最大高度$Max _ H$或者$Max _ H+1$ 因为使所有树高度相同为$H$的最优操作最多空出来$n-1$天$([1,1,1,1,2])$,但是使所有树高度相同为$H+2$不能在树 阅读全文
posted @ 2022-04-12 20:42 Xu-daxia 阅读(184) 评论(0) 推荐(0)
摘要:我们对 作文库 建出广义后缀自动机。考虑用$SAM$处理出来一个数组$mx[i]$,表示从作文的第$i$个位置向左最远在作文库中出现的子串的长度。这个东西可以在$SAM$上跑$trans$边来实现(其实求出来的是作文前i位在作文库中出现的最长后缀)。 处理出来这个东西,我们考虑用$DP$求答案。发现 阅读全文
posted @ 2019-01-06 17:49 Xu-daxia 阅读(143) 评论(0) 推荐(0)
摘要:求出一个串使得这个串是$s1,s2$的子串。串中不包含$s3$。 如果没有这个$s3$就可以二分答案,然后height小于二分值分一组。看看每组里是不是出现过$s1,s2$的后缀。判断就行。 然后有了$s3$之后,我们考虑改变一下height数组。 我们把$s1s2$拼在一起构成一个新串$s$。(中 阅读全文
posted @ 2019-01-03 22:12 Xu-daxia 阅读(174) 评论(0) 推荐(0)
摘要:题意 有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题。“主题”是整个音符序列的一个子串,它需要满足如下条件: 1.长度至少为5个音符。 2.在乐曲中重复出现。(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了 阅读全文
posted @ 2018-09-12 21:41 Xu-daxia 阅读(165) 评论(0) 推荐(0)
摘要:题意 问边长为n的两个正方形中最大的相等子正方形。(n<=50) 题解 用到了二维hash,感觉和一维的不太一样。 对于列行有两个不同的进制数然后也是通过类似前缀和的方法差分出一个矩形的hash值 这样可以0(1)的算出一个正方形的hash值。 然后我们二分长度x,每一次遍历整个长度为x的子正方形n 阅读全文
posted @ 2018-08-28 09:19 Xu-daxia 阅读(157) 评论(0) 推荐(0)
摘要:3110: [Zjoi2013]K大数查询 Description 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。 有N个位置,M个操作。操作有两种 阅读全文
posted @ 2018-08-12 15:23 Xu-daxia 阅读(240) 评论(0) 推荐(0)
摘要:题意 动态区间第k大 (n<=100000,m<=100000) 题解 整体二分的应用。 与静态相比差别不是很大。(和CDQ还有点像)所以直接上代码。 阅读全文
posted @ 2018-08-12 10:53 Xu-daxia 阅读(151) 评论(0) 推荐(0)
摘要:题解 又一次做这个题上一次用的是线段树上二分。这次用的是整体二分。结果: (第一个是整体二分) 整体二分就是对于所有查询都二分一个值。然后根据能不能成立把询问修改分成两部分,然后第二部分继承第一部分的信息,然后这两部分继续递归。直到答案的值域为一个数,将这些询问的答案设成这个数就行了。 实现的时候, 阅读全文
posted @ 2018-08-12 08:11 Xu-daxia 阅读(361) 评论(0) 推荐(0)
摘要:题意 给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值 题解 一个一个国家算会T。这题要用整体二分。我们二分mid给所有国家判断。把可以满足条件的国家放在左边,把所有不满足的国家放在右边。然后继续递归。 阅读全文
posted @ 2018-08-04 09:25 Xu-daxia 阅读(133) 评论(0) 推荐(0)
摘要:题意 给出n个点m条边的无向图。 每条边有两个权值a,b; 问在保证从1到n的路径a权值和小于x时,路径上b权值最大值最小为多少。 (n≤10000,m≤50000,x≤1000000000) 题解 二分x,然后跑最短路判断。 1 #include<iostream> 2 #include<cstr 阅读全文
posted @ 2018-08-03 22:12 Xu-daxia 阅读(245) 评论(0) 推荐(0)
摘要:题解 二分时间 然后一个显然的事是一个军队向上爬的越高它控制的点越多 所以首先军队尽量往上爬。 当一个军队可以爬到根节点我们记录下它的剩余时间T和它到达根结点时经过的根节点的子节点son。 当一个军队爬不到根节点时我们就让它控制它可以爬到的最高点。 然后我们把爬到根节点的军队按T从小到大排序。 然后 阅读全文
posted @ 2018-08-03 20:58 Xu-daxia 阅读(290) 评论(0) 推荐(0)
摘要:题解 单调性是当s-y大于0时w越小答案越优,反过来也成立。 所以二分答案。 然后问题是Yi怎么求,最接用前缀和预处理就行了。 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #inclu 阅读全文
posted @ 2018-08-03 20:16 Xu-daxia 阅读(321) 评论(0) 推荐(0)
摘要:题意 N(2<=n<=200)个城市,M(1<=m<=40000)条无向边,你要找T(1<=T<=200)条从城市1到城市N的路,使得最长的边的长度最小,边不能重复用。 题解 简单的网络流判定。 一看问法想到二分答案。然后边不能重复直接上网络流。 (用边长小于mid的边建图然后跑最大流,最后比较流量 阅读全文
posted @ 2018-08-03 19:59 Xu-daxia 阅读(272) 评论(0) 推荐(0)
摘要:题意 给定一个长度为n的序列a1~an,从中选取一段长度在s到t之间的连续一段使其平均值最大。(n<=100000) 题解 二分答案平均值。 judge时把每一个a[i]-mid得到b[i] 在b[i]中找到一段合法的串使其权值和最大。 当最大权值和大于等于0时则mid上移。 求最大权值和用单调队列 阅读全文
posted @ 2018-08-03 15:04 Xu-daxia 阅读(233) 评论(0) 推荐(0)
摘要:题意 不带修改区间第k小。(n<=100000) 题解 建立线段数和vector数组(vector为当前区间排列之后的序列)(归并) 然后对于每一个询问二分答案。 问题就转化为区间有多少数小于等于二分值。 对于我们每一个遍历的区间(线段数的节点)。 若与询问区间不相交return0。 若完全包含于询 阅读全文
posted @ 2018-07-30 20:27 Xu-daxia 阅读(305) 评论(0) 推荐(0)
摘要:题意 已知 N 座塔的坐标,N≤5000 把它们分成两组,使得同组内的两座塔的曼哈顿距离最大值最小 在此前提下求出有多少种分组方案 mod 109+7 题解 二分答案 mid 曼哈顿距离 >mid 的点连边 判定是否构成二分图 方案数为 2^最终的二分图连通块数目 1 #include<iostre 阅读全文
posted @ 2018-07-29 17:05 Xu-daxia 阅读(379) 评论(0) 推荐(0)
摘要:题意 哇,太长了。 题解 显然,树的直径不唯一但一定相交并且各个·直径的中点汇聚于同一处。 进一步得到一个推论,任意一个直径上求出的偏心距都相等。 原题中(n<=100)我们发现n的范围有点小。直接上暴力。 floyed预处理一下。找到树的直径。 暴力枚举树网的核再暴力枚举偏心距(至于具体怎么枚举看 阅读全文
posted @ 2018-07-28 12:01 Xu-daxia 阅读(240) 评论(0) 推荐(0)