分治
L_0_Forever_LF
一个热爱OI的OIer
展开
-
hdu 5730 2016 Multi-University Training Contest 1 Shell Necklace 解题报告
题意大概是说有n个石头,要你分成若干部分,一个部分的数量为k,那么他的价值就是a[k],这n个石头的价值就是每部分的价值的乘积,求所有分这n个石头的方法的价值和对313取模然后看完题意可以想到一个简单的DP,设f[i]表示i个石头的价值和,可以得到一个方程 f[i] = ∑f[j]*a[i-j] ,初始化一原创 2016-08-29 09:20:37 · 848 阅读 · 0 评论 -
BZOJ2683: 简单题
这题有个在线版的是BZOJ4066,而且空间只有20MB好像要用KD-tree,然后这题的话就可以离线弄,空间也没什么问题cdq分治+树状数组(为什么我的cdq打的和整体二分一样一样的。。不管了速度不慢就行)首先一个矩阵内的值可以分成4个(1,1)(x,y)(1,1)(x,y)的矩阵容斥一下弄出来,将一个询问分成4个,然后将所有操作+询问按x为第一关键字,时间为第二关键字排序。 二分时间,因为一个原创 2016-10-21 10:31:31 · 656 阅读 · 0 评论 -
BZOJ3295: [Cqoi2011]动态逆序对
将删除操作倒过来转成插入操作,然后可以CDQ,分两次分别处理每个数之前插入的,插入位置在它之前的,比他大的和之前插入的,插入位置在它之后的,比他小的。 时间权值位置都可以二分,我是二分权值的 对于第一次CDQ,每层根据权值的mid,将处理区间分成2个插入顺序递增的队列,≤mid的在左边,>mid的在右边,那么左边的插入会对右边的插入产生贡献,当且仅当在其之前插入且插入位置在其后,然后两个队列比较,原创 2017-03-18 07:37:00 · 678 阅读 · 0 评论 -
BZOJ4237: 稻草人
CDQ分治,按照横坐标排序,二分高度,按mid将当前处理的点分成两部分,计算高度>mid作为右上角的对高度≤mid的作为左下角的贡献 横坐标从右往左扫,因为田地内部不能有稻草人,所以对于右上角要求从右往左高度递增,对于左下角要求从右往左高度递增,所以维护两个单调队列 这里要注意几个问题, 对于一个上方的点,如果他比右边的同类点矮,那么要找到他右边第一个比他矮的同类点重新统计对当前左下角的点的贡原创 2017-03-18 15:04:10 · 794 阅读 · 0 评论 -
BZOJ4170: 极光
将每个位置的位置定为x,graze值定为y 那么任意位置上出现过的任意数值就对应上了平面上的若干个点 每次询问和一个点的哈密顿距离 <= x的点的个数 将哈密顿距离转为切比雪夫距离(x,y)−>(x+y,x−y)(x,y)->(x+y,x-y) 和一个点切比雪夫距离 <= x的点对应平面上一个矩形 那么询问就变成了询问平面上一个矩形内的点的个数 用KD-tree或cdq都是兹瓷的code原创 2017-04-26 08:32:07 · 1033 阅读 · 0 评论 -
codeforces 848E. Days of Floral Colours
自己对自己的吐槽.. 注意多项式相关的题,卷积算得的东西,下标>n的项最好清零,不然容易错,多项式求逆手推错了….在求逆过程中卷积的大小都是n<<1,ln+1,每次的id的ln要带进去重新生成,NTT没处理到w[N]结果访问w[n-i*tt]时错,有地方没取模,细节处理的不好。题解部分: 先考虑一段被两对oppsite的同色花截得的长度为i的弧和他对应的另一端弧的情况: g[i]表示不跨出去连原创 2017-09-12 22:11:02 · 807 阅读 · 0 评论 -
codeforces 553E - Kyoya and Train
一个有向图,走每条边有个代价,且花费的时间从1~T有个概率p[e][i],从1到n,若到达时时间超过T,则需要额外X的花费,问期望最小花费令f[i][j]表示在j时刻从i出发到达n的最小期望,因为虽然每条边花费的时间是不确定的,但至少是1,所以(i,j)这个分层图实际上是一个DAG,就可以dp了对于一条边e:u−>ve:u->v,有 f[u][t]=min(ei+∑Tj=1f[v][t+j]∗p[原创 2017-09-21 12:34:25 · 853 阅读 · 0 评论 -
BZOJ3711: [PA2014]Druzyny
orz考虑dp,f[i]表示1~i至多分成几段,g[i]表示1~i分成f[i]段的方案数 转移的时候将c[i],d[i]的限制分开考虑 对于d[i]的限制,不难发现他有单调性,可以预处理L[i]表示L[i]~i-1的j满足d[i]的限制可以由j转移到i 然后考虑c[i]的限制,他没有单调性,于是对c进行分治 如果我们在处理[l,r]这一个区间,找出[l+1,r]内c的最大值的位置k,那么k左原创 2017-12-15 09:26:52 · 681 阅读 · 0 评论 -
BZOJ2458: [BeiJing2011]最小三角形
这题和求平面最近点对有点像,这种题有个分治套路 先把所有点按x排序,我们用(l,r)代表(l,r)内周长最小的三角形 那么当我们处理到(l,r)时,先递归下去处理(l,mid),(mid+1,r) 令ans=min( (l,mid), (mid+1,r) ) 那么考虑 (l,mid) 中的点和 (mid+1,r)中的点合并成三角形 对于1个点在左侧,2个点在右侧的情况 我们枚举左侧这个...原创 2018-03-01 17:12:06 · 1171 阅读 · 0 评论