二分
文章平均质量分 79
johsnows
正在静下心来学算法的acmer
展开
-
cf1262D2 Optimal Subsequences (Hard Version)(二分答案+bit)
解法: 转换题意后,这题就是给定一个序列a,给出m个询问,问[0,k]的第pos小的数. 特殊就特殊在是从0开始的。 可以保存询问,我们让不同的询问ki从小到大排列,从小到大枚举k,将前ki个数存入树状数组,这时候可以通过二分答案来枚举答案mid,查询小于等于mid的数num,找出num=pos的最小的mid,就是第pos小的数了。 时间复杂度是O(nlog^2n) 应该能更快...还没...原创 2019-11-29 19:37:19 · 251 阅读 · 0 评论 -
codeforces 799 D String Game (二分答案)
题意: P有一个字符串t,他每次会按顺序以a1, a2...an为下标来删除t中的字符,n是t的长度。S想得到一个字符串p,保证p是t的一个子串,在P对字符串删除时,当到了合适的时候,S会过来阻止P,自己来完成删除得到想要的字符串s。问P最多能删除几个字符。 解题思路: 题目其实就是让求在保证p中有子序列s的情况下,最少能删除多少个字符串。 我一直在想着怎么优化验证p中有子序列s的原创 2017-02-27 09:35:21 · 497 阅读 · 0 评论 -
codeforeces 344 E Read Time
题意: n个磁头去读取m个磁道,给出磁头和磁盘的初始位置(递增给出),问最少需要多少时间所有磁道均被读取。 思路: 二分答案还是很容易想到的,难点大概在于贪心。 在确定时间t后考虑: 由于有多个磁头,所有最左边的磁道肯定要由最左边的磁头去读取,但是如果没次都让磁头从左边开始读取,是不对的。最左边的磁道自然是要读取,但是贪心的思想下,我们应该让当前磁头在读取最左边的磁道的往右走的越原创 2017-05-24 17:54:17 · 330 阅读 · 0 评论 -
poj 2886 Who Gets the Most Candies?(线段树+二分+反素数)
题意: n个小朋友围成一圈,每个小朋友有自己的名字以及一张卡片,卡片上的数字a代表在自己出列后想让自己右边第a个人下一个出列,如果a 解题思路: 暴力来的话是n^2的,由于n是5e5,所以肯定不行。 我们可以用一个线段树维护一下区间内剩余的数的个数,然后我们通过转换a,把下一个要出列的人在当前剩下的序列里的编号求出来,然后我们去query这个编号在原序列上的位置,这时候就要二分一下原创 2017-05-29 23:54:20 · 333 阅读 · 0 评论 -
hihocoder 1483 区间价值(二分+双指针)
询问所有区间值中第k小的值,肯定不能把所有区间的值求出来,毕竟有n^2个区间。 我们如果先假设一个答案,然后能够找到所有区间里有多少个区间的值小于当前的答案的话,岂不是就可以二分答案了。那么如何去找到小于x的区间有多少个呢,如果你会双指针的话,这里用一下双指针就是再方便不过了,o(n)的扫一遍加上一个桶来统计区间里元素的值就好了。 然后由于元素的值的范围是0到1e9,所有要先离散化一下,然后就原创 2017-06-18 17:39:29 · 692 阅读 · 0 评论 -
codeforces 812 C. Sagheer and Nubian Market(二分答案)
题意: n个商品,有s块钱,买第i件商品的价格为a[i]+i*k,a[i]为商品的基础价格,k为总共要买的商品数量,问最多能买多少件商品,在买相同数量的商品情况下,尽量让花的钱最少。 解题思路: 二分枚举要买的商品数量,然后排序一下价格,check是否能买到当前答案数量的商品,求出一个最大值即可。 代码: #include using namespace std; c原创 2017-06-02 17:20:35 · 631 阅读 · 0 评论 -
codeforces 814 C. An impassioned circulation of affection(暴力)
题意: 给出一个长度不超过1500的字符串(小写字母),询问不超过20000次,每次询问有一个数字x和字母y,x代表你可以改变字符串里x个字符为任意小写字母,y时询问你能得到的最大的连续为y的子串。 解题思路: 预处理出26个字母替换n次的答案,每种情况,去暴力枚举左端点,然后二分右端点,先预处理出一个每个字母在字符串中出现次数的前缀和,然后二分中的check直接利用这这个前缀和原创 2017-06-08 17:00:30 · 354 阅读 · 0 评论 -
hdu 6097 Mindis(几何)
因为PO = QO, 所以直接将PQ平移到平行于x轴的位置,这样比较好建立椭圆方程。 为什么会联系到椭圆呢,因为椭圆上任意一点到两焦点的距离等于定值,所以建立以PQ为焦点的椭圆,再求椭圆与圆相交时,最小的a,就求出答案了。 这里只知道c,需要二分一下b,b的范围就是r-h,h是圆心到PQ中点的距离。 http://www.cnblogs.com/chen9510/p/7341215.html原创 2017-08-11 19:49:28 · 461 阅读 · 0 评论