![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分
文章平均质量分 70
neither_nor
这个作者很懒,什么都没留下…
展开
-
BZOJ4570 [Scoi2016]妖怪
每个妖怪在指定环境下攻击和防御的变化量比值是一个定值,所以我们可以把妖怪看成平面上的点,横纵坐标为攻击和防御,对于每个妖怪环境看成一条k=-b/a的过该妖怪直线,每个妖怪的战斗力就是x=0时y的值加上y=0时x的值所以我们要维护一个右上凸壳,用一条直线卡这个凸壳,假设卡到的妖怪是(x,y),我们可以用x+y-kx-y/k更新答案对于每个单独妖怪,战斗力=x+y-kx-y/k,对勾函数,当k原创 2016-05-11 08:10:09 · 2215 阅读 · 0 评论 -
BZOJ2067 [Poi2004]SZN
第一问可以dp,第二问可以二分答案,然后再dp一遍判断dp的时候记录最少用多少路径以及连着父亲的路径多长即可把所有儿子按长度排序后尽量合并复杂度n log^2 n#include#include#include#include#include#include#include#include#include#include#include#include#in原创 2017-03-21 16:40:26 · 945 阅读 · 0 评论 -
BZOJ1510 [POI2006]Kra-The Disks
傻逼题先单调栈处理一下对于第i层,长度至多为多少才能到达然后每次二分一下落到哪即可#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#defin原创 2017-02-21 10:22:38 · 774 阅读 · 0 评论 -
BZOJ4724 [POI2017]Podzielno
先猜结论:一个B进制数+B-1后各位数字之和模B-1意义下不变证明:+B相当于在次低位+1,-1相当于在最低位-1,如果某一位加一,如果进位,则下一位会加一,这一位会减去B-1,所以对各位数字之和模B-1意义下的影响是+1如果某一位减一,如果退位,则下一位会减一,这一位会加上B-1,所以对各位数字之和模B-1意义下的影响是-1所以原数+B-1后各位数字之和在模B-1意义下不变那原创 2016-12-20 20:44:18 · 890 阅读 · 0 评论 -
BZOJ3230 相似子串 后缀自动机做法
……作为一名坚定的后缀自动机党,我当然要用后缀自动机做这题-_-这个……我发现我写题解的时候非常语无伦次,主要原因是后缀自动机那些术语除了一个max我都忘了,所以为了方便说话我们定义一些东西我们知道每个节点上(你理解为边上当然也可以的)有一个字符串,那么我们把这个字符串叫做a[x],这个字符串的长度叫做max[x],然后从根到一个点的路径能代表max[x]个字符串,我们把这些字符串叫做b[原创 2016-09-19 16:01:25 · 556 阅读 · 0 评论 -
BZOJ3969 [WF2013]Low Power
一看题目名,耳旁仿佛想起了红警的那一声“low power”,果断点开做首先发现最有答案里每个机器的两个芯片的能量值肯定是相邻的,否则可以通过交换使得这个机器更优然后考虑二分答案,假设当前答案为mid,我们要考虑的就是能不能从相邻的差小于等于mid的里边选出n个显然选前n个是最优的,判断一下能不能每个机子里都塞满大于等于两个最小值的电池即可,显然从后往前把电量大的往里塞比较优原创 2016-09-05 21:16:43 · 809 阅读 · 0 评论 -
BZOJ1189 [HNOI2007]紧急疏散evacuate
考虑二分答案然后判断,判断用网络流,S连每个人流量1,每个门按时间拆点,每个时间连T流量1,每个时间连下一个时间流量INF,然后每个人如果能在当前二分的时间内到达某个门,那么这个人连门的他到达的时间然后跑最大流看是否满流来判断即可#include#include#include#include#include#include#include#include#include原创 2016-08-29 15:57:41 · 993 阅读 · 0 评论 -
BZOJ4692 Beautiful Spacing
考虑先二分答案,然后DPf[i]表示i能否作为一行的结尾然后我们考虑i作为结尾时,可以作为这一行开头的单词,一个单词j可以作为这一行的单词,当且仅当slen[i]-slen[j-1]+(i-j)*now>=w&&slen[i]-slen[j-1]+i-j其中slen为单词长度的前缀和,w为列数,now为当前二分的答案所以可以作为当前行开头的单词一定是一段区间,我们可以对区间左右端点原创 2016-08-29 13:13:33 · 1105 阅读 · 0 评论 -
BZOJ1044 [HAOI2008]木棍分割
第一页的水题现在才过记得刚学的时候觉得二分之后的DP不会于是就没做这道题第一问经典二分,第二问f[i][j]表示到第i个人分了j段的方案数,记录一下f[i-1]的前缀和,用一个指针维护i往前最多能延伸多少个木棍而不超过长度限制,更新即可要滚动数组#include#include#include#include#include#include#include#inclu原创 2016-06-23 09:34:16 · 510 阅读 · 0 评论 -
BZOJ4556 [Tjoi2016&Heoi2016]字符串
恩,我们进行一些瞎YY,首先询问s[a~b]的所有子串与S[c~d]的最长LCP其实相当于询问s[a~b]的所有后缀与s[c~d]的最长LCP进一步转化设suf[i]表示S的从第i个字符开始的后缀,则其实相当于询问这个可以把d-c+1提到外面,就变成这样只需要考虑左面的,考虑若答案为l(lb-l+1的位置,而在a=l,那么s[i~b]就是一个与s[c~d]有长度为l的LCP的子原创 2016-06-14 10:10:42 · 1426 阅读 · 0 评论 -
BZOJ4501 旅行
由于是一个DAG,我们可以拓扑序求f[x]表示以x为起点的最大期望长度,对于点x,用其所有出边向x转移其实就是选择一些出边保留,剩下的删掉,要你最大化这是一个01分数规划问题,我们设上式>L,然后把所有东西移到不等式左边,就得到答案比L大的条件于是我们就要最大化左边,因为题目保证关联的边起点相同,所以每个点之间互不影响,我们发现y被删掉之后x也会被删掉相当于x被选的条件是y被选,所以用最大原创 2016-06-15 22:12:38 · 929 阅读 · 0 评论 -
BZOJ3130 [Sdoi2013]费用流
瞎YY一下发现显然在方案确定的情况下把所有费用分配在流量最大的边上最优,于是只要二分最大流量每次容量和二分的值取min跑最大流看是否和原最大流相等即可。流量可以是小数!!坑死我了,我还以为保留小数是逗你玩呢#include#include#include#include#include#include#include#include#include#include#in原创 2016-06-11 16:07:32 · 845 阅读 · 0 评论 -
BZOJ4590 [Shoi2015]自动刷题机
#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 100010#define MAXM 1010#define ll long原创 2016-05-18 15:22:14 · 901 阅读 · 1 评论 -
BZOJ4552 [Tjoi2016&Heoi2016]排序
BC#76原题……二分答案,把小于等于mid的设成零,大于mid的设成1,然后排序可视为区间赋值和区间求和,可用线段树做当mid大于等于答案的时候,最后p的位置一定是0,当mid小于答案的时候,p的位置一定是1,所以满足可二分性复杂度O(n log^2 n)#include#include#include#include#include#include#include原创 2016-05-13 09:09:50 · 1353 阅读 · 0 评论 -
BZOJ4443 [Scoi2015]小凸玩矩阵
二分答案,若x可行,说明能取出n-k+1个小于等于x的数(为什么不是k个呢,因为是k大啊不是k小-_-)判断的话若(i,j)小于等于x,则第i行向第j列连边,然后跑最大流看是否大于等于n-k+1即可#include#include#include#include#include#include#include#include#include#include#includ原创 2016-05-11 17:36:58 · 1251 阅读 · 0 评论 -
BZOJ2653 middle
中位数的话,可以考虑一下二分答案,然后把原序列转成01序列,看0和1的数量谁多就知道答案是大于mid还是小于mid了这样如果不强制在线可以整体二分但是强制在线了-_-好吧,我们考虑维护mid逐渐增长,那么每次会有一些点从0变成1,我们需要的是每次在某一个mid下查询区间的最大连续和之类的东西,那么我们用主席树维护每个mid的时候的01序列即可#include#include#i原创 2017-03-15 14:19:40 · 360 阅读 · 0 评论