二分
qkoqhh
这个作者很懒,什么都没留下…
展开
-
codeforce 888E
EDU的题目就是水啊,这次A了5题,算是目前最多的一次吧。。然后E还是有些经典的。。2分+dfs再合并,这种题虽然以前是见过很多次却没有去实现过,所以把自己的代码贴一下合并的时候先排序再二分能够有效地降低复杂度//#include#include#include#include#include#include#include#define inc(i,l,r) for原创 2017-11-10 13:09:25 · 616 阅读 · 0 评论 -
bzoj5311/cf321E(单调决策性DP+wqs二分)
显然可以用单调决策性DP求。。设d[k][i]为选第k段,到第i个的最小代价d[k][i]=max{d[k-1][j]+cost(j+1,i)}其中cost可以O(n^2)递推预处理,显然cost是一个下凸函数。。设2个决策点j<v<i,若d[k-1][j]+cost(j+1,i)>d[k-1][v]+cost(v+1,i),那么随着i增加,这个等式一直成立,即j...原创 2018-11-20 17:54:05 · 216 阅读 · 0 评论 -
2018南京B(wqs二分+单调决策性DP)
题目链接:http://codeforces.com/gym/101981题意:有n户人家,要建m个体育馆,要安排这m个体育馆,使得每户到最近的体育馆的距离之和最小这个原题应该是poj1160。。当时是用n^2的单调DP过的,这题显然不行,需要新套路。。然后有牛逼网友说用wqs二分,学了下思想觉得好牛逼啊。。大体是对建一个体育馆,即支配一个区间需要付出额外的代价t,这样只要二分t就...原创 2018-11-19 01:13:26 · 491 阅读 · 0 评论 -
cf519F(二分答案+莫比乌斯反演+线性容斥)
题意:从一个序列中的最小互斥序列(即所有数的gcd为1)的长度这个一看就是比较套路的题,还是有不少地方得学的。。然后显然需要二分答案,考虑选取长度为k的序列的gcd,设gcd为d的选取方案为f(d),然而f(d)并不好求而如果设选取的gcd为d的倍数的方案数为g(d),那么,其中s(d)为原序列中能被d整除的个数,这个可以直接对每个数分解因子得到。。(这个思路其实和https://bl...原创 2018-10-30 00:37:25 · 423 阅读 · 0 评论 -
cf411D(dfs/dp+离线+二分)
这个题确实比较综合,也非常巧妙。 。首先对每棵树,需要算出以每个点为根的最大深度d,这样连边的时候就能直接更新直径。。这个可以用2遍dfs上搞搞下搞搞就行。。主要维护前2大深度。。然后如果直接统计答案的话显然是不行的。。。但是如果和起来算有个问题是可能经过这条外加边形成的直径会比原直径小,那么先和起来算之后再关注比原直径小的情况。。很容易想到的一个做法是先对d排序,求前缀和,然后枚举其中一...原创 2018-10-04 01:24:54 · 209 阅读 · 0 评论 -
luogu2765(二分答案+网络流/贪心)
没贴网络流标签绝对想不到网络流orz。。或许会想到贪心去莽一发?先说说网络流的。。其实很容易想到把每个数字作为一个点,对能构成平方数的数对连边,这样一来一根柱子就能看作一个路径,然后就变成了最小覆盖路径了。。。所以对给定答案是能判断其最大柱子数,所以很容易想到用二分去做。。。事实上好像用枚举会更快?因为重建图重跑一遍最大流的时间比相比于枚举实在是要大得多了。。不过这种感觉蛮难写的。原创 2018-05-08 23:35:29 · 280 阅读 · 0 评论 -
长大校赛C(st表+二分)
这个题有点意思 。。可能窝的想法和题解不一样。。不过比较容易想到。。首先从最暴力想起,就是枚举区间端点,再找最次值酱紫。。当然次大值这个还是相当好搞,维护一个st表就可以解决辣。。如果枚举子区间的话明显是超时的。。然后固定一端另一端也没办法很好地去怎么计数。。所以这个思路可能得放弃了。。然后貌似是齐齐说过,像这种枚举所有子区间并排序的肯定是要考虑每个元素的贡献?所以尝试求出a[i]的贡献。。怎么求...原创 2018-04-15 01:19:41 · 323 阅读 · 0 评论 -
poj2452(st表+二分)
区间最小和最大是十分好解决的。。然而2端点直接枚举会T啊。。所以最多枚举一个端点。。然后其实根据最小值可以二分求出满足最小值为左端的区间。。。然后在此基础上把区间最大值的位置求出来就可以了。。求最小最大什么的用st表就很方便。。/** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃原创 2018-04-09 14:36:52 · 538 阅读 · 0 评论 -
bzoj2957(线段树+二分)
这题很明显需要维护最大斜率(当然选择线段树辣)。。然后维护完怎么保证单调就很让人烦恼了。。假设有2段已经符合要求的单调序列要合并时,可以想到应该要把左段的最大值求出来,再对右段进行二分查找。。所以合并时还要加多一个二分查找,边找边加上区间就可以。。可以肯定的合并的时候左段肯定是整段加上,而右段是经过消减的,所以在加上区间时应该用整段减去左段,不然直接加右段会将消减去的部分再重新加回来。原创 2018-02-23 12:35:35 · 241 阅读 · 0 评论 -
yandex资格赛e(tire+bit+离线处理+二分)
这个姿势有点特殊。。首先先把字符串变成数字再说。。用tire轻松解决。。。然后就是要在区间内查询是否m个数都存在了。。可以先离线处理,将之前出现过的相同的数字记下,枚举r,枚举的同时相同的数字只保留最后一个,因为区间右端已经确定,如果从右往左扫,之前的相同数字是起了重复作用,将这些数字标记为1的话就是转变为查询和为m的最小区间,直接二分即可。。由于是单点修改,区间和可用BIT维护。。原创 2018-02-19 18:43:57 · 529 阅读 · 0 评论 -
cf913D(二分答案)
真的是一遇到二分答案就猝不及防丫。。回想起了那年的跳石头qaq这种思维还真不好练,刷题并不能起到什么作用,估计我得再被坑害几次才会掌握吧qaq这题的二分貌似是想了半小时才想出来,不过实现的时候发现自己已经长年没写二分,写起来手非常生疏,犯了好多傻逼错误,心态爆炸云云。。早知道当时应该直接推掉重写,而且还误解题意qaq靠样例看题不行蛙qaq题目事实上只对分数作了要求,对题量并没有要求,那原创 2018-01-09 15:07:43 · 318 阅读 · 0 评论 -
UVA11610(欧拉筛+二分+BIT)
看到数论其实就有点虚了。。还好欧拉筛自己还是会的。。其实很明显可以看出最后一个数位一定是0,那么在处理的时候先提出个2和5,把1e7降成1e6然后在1e6内筛出素数,题中的reverse prime就是把这些素数翻转后加0,然后排序。。当然我不是很想排序。。所以直接枚举了各个数去翻转,免去了排序。。然后就是把这些数的因子提出来。。在提的过程中可以判断剩下的数是不是素数。。这样可原创 2018-01-24 18:44:47 · 233 阅读 · 0 评论 -
hdu 2852(BIT+二分)
找比k大的数,可以加上k前面的个数,然后转化为求第k大数把数作为下标,然后维护小于x的数的个数,然后查找的时候二分即可,时间复杂度O(n*logn*logn)当然如果用线段树是可以达到O(nlogn)的。。不过这题的意图是BIT,而且还放宽了时限。。#include#include#include#include#include#include#define原创 2018-01-22 19:39:28 · 232 阅读 · 0 评论 -
bzoj2654(wqs二分+MST)
直接二分白色边边权权值再做MST就可以了。。注意相同边权排序时保持黑白色边的一致性。。 /* * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ┃ * ┃... ⌒ .....原创 2018-11-19 12:18:37 · 223 阅读 · 0 评论