Icefox的博客

生活不止眼前的苟且,还有诗和远方。

bzoj3600 没有人的算术(替罪羊树动态标号+线段树)

最大值线段树维护即可。 问题就是一个动态标号。 可以用重量平衡树–替罪羊树来做。 复杂度O(mlogn+mlogm)O(mlogn+mlogm)O(mlogn+mlogm) #include <bits/stdc++.h> using names...

2018-07-14 21:31:05

阅读数:85

评论数:0

bzoj4372 烁烁的游戏(点分治+线段树)

无限CE…一丝丝怀疑人生qaq 考虑点分树维护这个东西。每个节点x开一颗线段树,每个叶子节点i记录距离x距离为i的点加了多少。每次修改/询问在点分树上跳父亲就好了。然后还要容斥一下多加的部分,因此需要每个点再开一颗线段树表示到fa[x]距离为i的要减掉多少。 可以吧前缀加单点询问变成单点加后缀...

2018-07-14 18:26:36

阅读数:1332

评论数:0

bzoj4558 [JLoi2016]方(容斥原理,计数,Hash)

这容斥真是写的我心态爆炸… 考虑用至少0个坏点的-至少1个坏点的+至少两个坏点的-至少三个坏点的+至少四个坏点的。 我们发现对于斜着的正方形,可以直接在框住它的大正方形处计数,边长为i的大正方形内就有i个正方形。 且我们发现每个点出现且仅出现在一个正方形上。因此对于至少一个坏点的正方形,我们...

2018-07-13 23:27:23

阅读数:70

评论数:0

bzoj4003 [JLOI2015]城池攻占(左偏树)

左偏树就是满足堆性质,且满足左子树深度不小于右子树深度的二叉树。 这样右子树深度是O(logn)O(logn)O(logn)的。 可以用来做可合并堆。 复杂度O(nlogn)O(nlogn)O(nlogn) 此题就是裸题啦,维护一个乘法标记和加法标记即可。因为乘的是一个正数,因此大小关系不...

2018-07-13 21:21:51

阅读数:87

评论数:0

bzoj3083 遥远的国度(树链剖分+换根)

树链剖分基本操作,换根其实就是把dfs序列分裂,倍增找一下当前rt到询问点x的儿子,把这一段区间去掉即可。 #include <bits/stdc++.h> using namespace std; #define ll long long #defi...

2018-07-13 20:09:12

阅读数:54

评论数:0

bzoj4850 [Jsoi2016]灯塔(决策单调性)

同bzoj2216 #include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 500010 inline ch...

2018-07-07 21:59:11

阅读数:311

评论数:0

bzoj4061 [Cerc2012]Farm and factory(贪心+Dijkstra+切比雪夫距离)

记新首都为x点,我们对于每一个原来的点u都需要满足 dis[u][x]+dis[x][1]>=dis0[u][1],dis[u][x]+dis[x][2]>=dis0[u][2]dis[u][x]+dis[x][1]>=dis0[...

2018-07-05 23:40:55

阅读数:101

评论数:0

bzoj1563 [NOI2009]诗人小G(dp+决策单调性+二分)

首先有很显然的O(n2)O(n2)O(n^2)dp f[i]=min{f[j]+|s[i]−s[j]+i−j−1−L|p}f[i]=min{f[j]+|s[i]−s[j]+i−j−1−L|p}f[i]=min\{f[j]+|s[i]-s[j]+i-j-1-L|^p\} 30分。 然后考虑p=...

2018-07-03 21:29:57

阅读数:52

评论数:0

bzoj3163 [Heoi2013]Eden的新背包问题(分治+背包dp)

每次询问去掉物品i之后,j的钱最多可以买多大价值的东西。 我们可以分治[l,r]表示l~r的物品不买的背包数组。然后递归处理[l,mid]时把[mid+1,r]的物品转移进来,递归处理[mid+1,r]时把[l,mid]的物品转移进来。 转移的时候就是一个多重背包,可以单调队列优化。 复杂度...

2018-07-03 17:01:29

阅读数:99

评论数:0

bzoj1531 [POI2005]Bank notes(单调队列优化多重背包)

单调队列优化多重背包的板子。 我们朴素的多重背包做法是O(m∑c)O(m∑c)O(m\sum c)的 可以用二进制优化成O(m∑logc)O(m∑logc)O(m\sum logc) 更进一步的,我们可以用单调队列优化成O(nm)O(nm)O(nm) 考虑转移方程 f[j]=max{f[...

2018-07-03 16:40:08

阅读数:158

评论数:0

bzoj2726 [SDOI2012]任务安排(cdq分治+斜率优化)

我们显然有n^2 dp f[i]=min{f[j]+(S+t[i]−t[j])∗w[j]}f[i]=min{f[j]+(S+t[i]−t[j])∗w[j]}f[i]=min\{f[j]+(S+t[i]-t[j])*w[j]\} 其中t[i]=∑j=1iT[i],w[i]=∑j=i+1nF[j]...

2018-07-03 12:30:11

阅读数:78

评论数:0

bzoj2739 最远点(凸包+决策单调性+分治)

给定一个凸包,询问每个点距离最远的点的标号。 我们按逆时针考虑每一个点i,距离i最远的点j也是在逆时针转的。 因此我们可以把这个凸包拆成链,(把点再复制一次),每个点i合法的点的区间为[i,i+n]。其余点到i的距离为-inf。这样我们就有决策单调性了,随着i的增大j也是单增的。因此我们可以直...

2018-07-02 23:05:53

阅读数:68

评论数:0

bzoj2216 [Poi2011]Lightning Conductor(决策单调性+分治/二分+单调栈)

化简一下就是求ans[i]=max{aj+|i−j|−−−−−√}−a[i]ans[i]=max{aj+|i−j|}−a[i]ans[i]=max\{a_j+\sqrt{|i-j|}\}-a[i] 我们把绝对值去掉,正着倒着各做一遍即可。 现在只考虑<i&...

2018-07-02 21:56:10

阅读数:67

评论数:0

bzoj2300 [HAOI2011]防线修建(动态维护凸包)

把操作离线,倒着做,这样就是加点维护凸包了。 可以用set维护一下当前凸包上的点 然后每次新加一个点时判断是在凸包内还是凸包外 如果在凸包外,就要重新维护上凸壳,往两边删点,直到再次构成凸壳。 O(nlogn)O(nlogn)O(nlogn) #include <b...

2018-07-01 22:37:43

阅读数:38

评论数:0

bzoj4946 [Noi2017]蔬菜(模拟费用流,贪心,线段树)

首先我们有一个费用流的做法。 因为保质期这个东西不太好限制,我们把每种蔬菜都按照过期时间分成若干类,每类大概x个,这样就相当于我们有了n*p种蔬菜。每种蔬菜在指定时间过期。我们把S的奖励放到每一种蔬菜过期时间最晚的那一类中去。 我们可以建图,S向每一天i连边,容量为m,费用为0,每一天i向所有...

2018-06-29 22:28:40

阅读数:168

评论数:0

bzoj4944 [Noi2017]泳池(dp,概率与期望)

首先把求最大面积恰为K的概率转化成 求最大面积<=K的概率-最大面积<=K-1的概率 我们注意到最底层一定是选了若干段<=K的连续段,于是我们可以枚举连续段的长度来dp。 我们考...

2018-06-28 22:20:52

阅读数:45

评论数:0

bzoj4943 [Noi2017]蚯蚓(Hash+复杂度分析卡常)

做法较为明显,直接模拟即可。Hash比较字符串。 复杂度分析一波,如果没有2操作的话,复杂度显然是O(nk)O(nk)O(nk)的,考虑有2操作的话,分裂两个蚯蚓的复杂度是O(k2)O(k2)O(k^2),因此而带来的合并复杂度也是O(ck2)O(ck2)O(ck^2)的,因此总的复杂度就是O(...

2018-06-28 15:27:52

阅读数:45

评论数:0

bzoj4650 [Noi2016]优秀的拆分(计数+SA)

好久没写SA了的赶脚qaq 考试时写了95分的O(n2)O(n2)O(n^2)暴力hash 我们考虑枚举中间分割点i,以i结尾的AA串个数*以i+1开头的AA串个数就是对答案的贡献。 于是我们只需要处理出f[i],以i结尾的AA串个数 g[i],以i开头的AA串个数这两个数组。 我们考虑枚...

2018-06-27 23:07:09

阅读数:38

评论数:0

bzoj4742 [Usaco2016 Dec]Team Building(dp)

把所有牛一起降序排序,权值相同的FP的在前。 然后直接dp就好了,f[i][j][k],考虑前i头牛,FJ已经选了j头,FP已经选了k头的方案数,要求k<=j #include <bits/stdc++.h> using na...

2018-06-27 20:18:53

阅读数:42

评论数:0

bzoj1670 [Usaco2006 Oct]Building the Moat(凸包)

求凸包裸题。用的是Graham扫描法求凸包。 a×b>0a×b>0a\times b>0 说明向量b在向量a的逆时针方向上。 我们一开始极角排序就是要把这些点与点1的连线逆时针排序。 然后按顺序处理这些点,维护一个栈,使得相邻点之间的...

2018-06-26 21:14:38

阅读数:38

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭