关闭

[agc002d]Stamp Rally

前言简单套路题。题目大意一副连通图,每次询问从两个点x和y出发走出两条路径,希望至少经过一次的点数量等于z,经过的边最大编号最小是多少。简单题假如可以暴力,你可以按编号从小到大加入边,如果x和y不在一个联通块,能经过的点等于两个所在联通块大小的和,否则等于所在联通块大小,找到第一次大于等于z的位置。 不枚举也可以二分。 那不如整体二分吧,并查集采用按秩合并,好处是容易撤销。#include<cs...
阅读(36) 评论(0)

Sequence

题目大意有两个序列a和b。 每次询问将一个区间a值排名在[x,y]的中找一个b值第k小。做法用主席树将排名的x和y变成具体的值。 接下来可以根据b整体二分,其余部分可以拆区间+扫描线+数据结构完成。#pragma GCC optimize(2) #include #include #define fo(i,a,b) for(i=a;i<=b;i++) usi...
阅读(106) 评论(0)

[bzoj4553][TJOI&HEOI2016]序列

题目大意有一个长度为n的序列,有一些位置的值有可能变化。 一次变化最多只会改变一个位置上的值,题目告诉了你可能发生的变化情况。 求在任意可能情况下都能满足非降的最长子序列长度。DP先弄出偏序关系,设mi[i]表示位置i可能出现的最小值,mx[i]就是最大值。 那么对于j<ij<i,j与i可以在一个合法子序列中的条件是: 1、a[j]<=mi[i] 2、mx[j]<=a[i] 设f[i]表...
阅读(870) 评论(3)

ZOO

题目大意M个询问询问区间K小值。整体二分我们用K大数查询这道题的思路整体二分。 这道题直接套用K大数查询需要带两个log。 我们把询问l~r拆为两个询问1~r和1~l-1,那么每个询问都变成一个前缀,于是我们想着搞一波线性作法。 观察到对于答案区间为l~r,我们只需要扫描在这个区间内的数。 也就是说对于l~r中的数,<=mid的数继续归到左区间其余归到右区间。 一个区间内的询问按照右端点排...
阅读(337) 评论(0)

整体二分及cdq分治题库

关于整体二分及cdq分治算法的一些题目...
阅读(520) 评论(0)

[bzoj3110]K大数查询

题目大意现在有N个盒子,初始为空。有M个操作,每个操作要么为编号范围在l~r的盒子都放入一个球上面的数为a,要么是询问编号范围在l~r的盒子所有球上的数的第k大值。 n,m<=50000离线大法好是不是很容易想到树套树? 我们这题是可以用整体二分或cdq分治的(我并不能分清它们) 具体做法如下: 用solve(l,r,S)表示现在处理S集合,S集合是操作集合按照时间排序,所有插入操作满足插入...
阅读(442) 评论(0)

[NOIP2015]推销员

题目大意现有长度为N的两个数组a和s 有N个询问,第i个询问你需要找出一个i使得s[i]*2+a[i]+1..i-1中a数组前i-1大的值之和最大。整体二分注意到每个询问找出的那个最优的i是满足单调性的 因此可以对所有询问整体二分 用solve(l1,r1,l2,r2)表示当前处理第l1~r1个询问,他们最优的i范围在l2~r2。 令mid1=(l1+r1)/2,我们在l2~r2则找,看看那...
阅读(1124) 评论(2)
    个人资料
    • 访问:251936次
    • 积分:10104
    • 等级:
    • 排名:第1813名
    • 原创:743篇
    • 转载:4篇
    • 译文:0篇
    • 评论:189条
    最新评论
    文章分类