自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Icefox的博客

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

  • 博客(1245)
  • 资源 (3)
  • 收藏
  • 关注

原创 poj2318 TOYS(计算几何)

那些年不想写的计算几何,总有一天要还。直接枚举点,枚举四边形即可,只要用叉乘判断点是否在两条线段中间即可。O(nm)O(nm)O(nm)#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <vector>using n...

2019-06-28 17:23:38 329

原创 bzoj1791 [Ioi2008]Island 岛屿(求基环树直径,单调队列)

给定一个基环树森林,求每一棵基环树的直径,他们的和就是答案。基环树的直径:先找到环,然后直径只有可能是1.环上某一个点的子树的直径2.环上某两个点之间的距离加上他们各自子树中最深的点的深度。然后搜一搜就好了,情况2可以单调队列一下。O(n)O(n)O(n)我写的太丑了,bzoj跑不过去qaq#include <bits/stdc++.h>using namespace ...

2019-06-28 11:52:22 400

原创 bzoj5100 [POI2018]Plan metra(树+构造)

构造题,细节较多。第一次WA:没有判1-n的链上如果d[1][i]相同的话是不合法的。第二次WA:没有判1-n距离为0的情况是不合法的。#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 500010int n,d[2][N],mn...

2019-06-24 17:34:49 328

原创 bzoj4289 PA2012 Tax(优化建图+Dijkstra)

首先我们考虑把无向图变成有向图,然后化边为点,新图中两点之间距离为边权的max,然后新建源点S向1的出边化成的点连边,边权为出边边权,新建汇点T,n的入边化成的点向T连边,边权为入边边权。然后S到T的最短路就是答案。这样最坏是O(m2)O(m^2)O(m2)的边。考虑优化建图:因为max(a,b)=a+max(b−a,0)max(a,b)=a+max(b-a,0)max(a,b)=a+max(b...

2019-06-24 16:22:44 231

原创 bzoj1098 [POI2007]办公楼biu(图论+list)

给出补图,求原图的连通块个数及大小。我们直接bfs原图,每次把补图中的边(也就是原图完全图中被删掉的边)通向的点打上标记,这样没被标记的点就是与此点连通的,都在一个连通块内,用链表优化一下,支持O(1)O(1)O(1)插入删除。每个点在链表中只会被删一次,所以这部分复杂度是O(n)O(n)O(n)的,每次给补图中的边连接的点打标记是O(m)O(m)O(m)的,因此总的复杂度是O(n+m)O(n...

2019-06-22 14:21:54 369

原创 Codeforces Round #568 (Div. 2)

老年选手水平退化严重,花样WA题。A.Ropewalkers贪心#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 500010int main(){// freopen("a.in","r",stdin); int a[3],...

2019-06-20 22:46:29 241

原创 退役记。

终于…还是退役了吧。 拖了很久却写不出那退役记。 真的很想把这一年的经历都记下来,怕自己日后忘记,却遗憾自己没有西酱那样的文笔。 简单说来,从去年的noip爆炸开始,大概就已经奠定了这结局。只是真的两手空空,没有一点点的降分回来了,还是让自己有些不敢相信。 省选之后,感觉自己突然不知道该喜欢什么,追求什么了,初二时的那种茫然无助的感觉再度被唤醒,对一切心生厌倦,自然也就不知该如何再拼尽全力...

2018-07-28 20:08:48 1428 1

原创 uoj217【UNR #1】奇怪的线段树(优化建图+最小流)

官方题解:http://c-sunshine.blog.uoj.ac/blog/1860首先你需要发现只要覆盖了“自己是黑色节点,且子树内没有其他黑色节点了的点”即可。然后你每次覆盖的一定是一段连续的右儿子+一段连续的左儿子。而且这样是一一对应的。然后我们可以对每个点往可能的后继连边,这样就得到了一张DAG,于是问题转化成最小路径覆盖问题。 带上下界最小流即可。#include &lt;...

2018-07-15 22:14:37 548

原创 uoj207 共价大爷游长沙(lct+Hash)

考虑我们给S中的每条路径一个权值,然后对这段路径异或上这个值。 那么最后询问的那条边如果权值等于S集合的异或和那么就说它被所有路径经过了。这样的正确性是很高的。 然后考虑新加入一条边,就会出现一个环,然后肯定是在这个环上删去一条边,假设是x,y那么在新的树上x-&gt;y的路径上异或上x,y这条边的异或值就可以得到新树的正确异或了。(画画图理解一下就是对存在性取反了) 因此维护一棵边权lct...

2018-07-15 20:02:35 413

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

最大值线段树维护即可。 问题就是一个动态标号。 可以用重量平衡树–替罪羊树来做。 复杂度O(mlogn+mlogm)O(mlogn+mlogm)O(mlogn+mlogm)#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 100...

2018-07-14 21:31:05 323

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

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

2018-07-14 18:26:36 1734

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

这容斥真是写的我心态爆炸… 考虑用至少0个坏点的-至少1个坏点的+至少两个坏点的-至少三个坏点的+至少四个坏点的。 我们发现对于斜着的正方形,可以直接在框住它的大正方形处计数,边长为i的大正方形内就有i个正方形。 且我们发现每个点出现且仅出现在一个正方形上。因此对于至少一个坏点的正方形,我们只需要统计过一个坏点的正方形框架个数即可。然后就是毒瘤的分类讨论!至少两个三个四个的可以通过枚举两...

2018-07-13 23:27:23 335

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

左偏树就是满足堆性质,且满足左子树深度不小于右子树深度的二叉树。 这样右子树深度是O(logn)O(logn)O(logn)的。 可以用来做可合并堆。 复杂度O(nlogn)O(nlogn)O(nlogn)此题就是裸题啦,维护一个乘法标记和加法标记即可。因为乘的是一个正数,因此大小关系不变。从底向上合并起来即可。#include &lt;bits/stdc++.h&gt;using...

2018-07-13 21:21:51 364

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

树链剖分基本操作,换根其实就是把dfs序列分裂,倍增找一下当前rt到询问点x的儿子,把这一段区间去掉即可。#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define inf 0x7fffffff#define N 100010inline char gc(){ static cha...

2018-07-13 20:09:12 365

原创 【UNR #3】Day1

A(70)#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 200010inline char gc(){ static char buf[1&amp;lt;&amp;lt;16],*S,*T; if(T==S){T=(S=buf)...

2018-07-13 16:31:01 328

原创 CF547D Mike and Fish(欧拉图)

考虑行列建点,每个点变成边。 如果是欧拉图,那么每个点的入边=出边,考虑每一个行点,把入边都染成r,出边都染成b那么就一样多了。 但是有可能一开始不是个欧拉图,我们可以对度数为奇数的点两两配对(一定有偶数个),然后就一定是个欧拉图了。跑无向图输出欧拉回路即可。 复杂度O(n)O(n)O(n)#include &lt;bits/stdc++.h&gt;using namespace st...

2018-07-12 14:41:02 834

原创 CF367E Sereja and Intervals(dp,计数)

因为不能包含,所以一定没有相同的区间,我们可以先不考虑顺序,求出可能的方案数,然后乘上n!就是答案。我们考虑按1~m的顺序枚举每一个数,由于不能包含,所以一个数上最多一个左区间和最多一个右区间,我们直接枚举这4种情况即可。因此f[i][j][k]f[i][j][k]f[i][j][k],表示考虑前i个数,有j个左括号,k个右括号的方案数。 在dp到X的时候强行选左括号即可。 由于nm&lt...

2018-07-12 14:05:40 523

原创 CF453E Little Pony and Lord Tirek(线段树+二分)

考虑如果一个区间在同一时刻被清过零,怎么做。 我们可以把这个区间中的点按生成满能量的时间从小到大排序,然后用生长了的时间去二分。一定是前面一段都是满能量,可以前缀和算,后面一段也可以r的后缀和×生长时间算。 我们线段树维护一下这个东西。 如果区间内有未清过零的点打标记-2. 如果一个区间被统一清过零,打标记清零时间&gt;=0 如果清零时间不统一打标记-1 如果一个区间被完全覆盖并且打...

2018-07-09 22:38:30 500

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

同bzoj2216#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 500010inline char gc(){ static char buf[1&lt;&lt;16],*S,*T; if(S==T){T=(S=...

2018-07-07 21:59:11 658

原创 Codeforces Round#495

A#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 100010inline char gc(){ static char buf[1&amp;lt;&amp;lt;16],*S,*T; if(S==T){T=(S=buf...

2018-07-06 23:57:01 218

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

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

2018-07-05 23:40:55 405

原创 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=2的,化一下式子可以发现是个斜率优化。 20分。 考虑4,5两个L非常小的点,可以贪心,每行如果放...

2018-07-03 21:29:57 330

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

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

2018-07-03 17:01:29 634

原创 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[j−k∗v[i]]+k∗w[i]|0≤k≤c[i]}f[j]=max{f[j−k∗v[i]]+k∗w[...

2018-07-03 16:40:08 749

原创 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]t[i]=∑j=1iT[i],w[i]=∑j=i+1nF[j]t[i]=\sum\limits_{j=...

2018-07-03 12:30:11 334

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

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

2018-07-02 23:05:53 658

原创 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]我们把绝对值去掉,正着倒着各做一遍即可。现在只考虑&amp;lt;i&amp;lt;ijjj设k1&amp;lt;k2&amp;lt;ik1&amp;lt;k2&amp;lt;ik_1ak1+i−k1−−−−−√&amp;lt;ak2+i−k2−−

2018-07-02 21:56:10 633

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

把操作离线,倒着做,这样就是加点维护凸包了。 可以用set维护一下当前凸包上的点 然后每次新加一个点时判断是在凸包内还是凸包外 如果在凸包外,就要重新维护上凸壳,往两边删点,直到再次构成凸壳。 O(nlogn)O(nlogn)O(nlogn)#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long...

2018-07-01 22:37:43 322

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

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

2018-06-29 22:28:40 880

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

首先把求最大面积恰为K的概率转化成 求最大面积&amp;amp;lt;=K的概率-最大面积&amp;amp;lt;=K-1的概率我们注意到最底层一定是选了若干段&amp;amp;lt;=K的连续段,于是我们可以枚举连续段的长度来dp。我们考虑f[i][j]f[i][j]f[i][j]表示底边长为i,且每一列都向上延伸至少h的高度且满足面积&amp;amp;lt;=K的概率那么我们有 fn,mfn,mf_{n, m} = ⎧⎩⎨⎪⎪01pnfn,...

2018-06-28 22:20:52 316

原创 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(nk+ck2+|s|)O(nk+ck2+|s|)O(nk+ck^2+|s|) 然后就是卡常啦! 首...

2018-06-28 15:27:52 257

原创 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串个数这两个数组。我们考虑枚举AA串的半长度len,每隔len个设一个关键点,那么一个合法的长度为len的AA串一定包含了恰好两个...

2018-06-27 23:07:09 202

原创 bzoj4742 [Usaco2016 Dec]Team Building(dp)

把所有牛一起降序排序,权值相同的FP的在前。 然后直接dp就好了,f[i][j][k],考虑前i头牛,FJ已经选了j头,FP已经选了k头的方案数,要求k&lt;=j #include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 1010#de...

2018-06-27 20:18:53 230

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

求凸包裸题。用的是Graham扫描法求凸包。 a×b&gt;0a×b&gt;0a\times b>0 说明向量b在向量a的逆时针方向上。 我们一开始极角排序就是要把这些点与点1的连线逆时针排序。 然后按顺序处理这些点,维护一个栈,使得相邻点之间的线段都是逆时针转的。这样就得到了一个凸包。 写个模板题还被卡精度了gg 要1e-6…#include &lt;bits/stdc++.h&gt...

2018-06-26 21:14:38 222

原创 CF392E Deleting Substrings(区间dp)

题意就是说给你一个序列a,你每次可以选择一段“山峰形”子串删掉,获得v[长度]的价值,价值可能为负。可以不全删掉,求最大价值。 f[i][j] 把i~j都删掉的最大价值 g[i][j] 把i~j删成a[i],a[i]+1,…,a[j]的形式的最大价值 h[i][j] 把i~j删成a[i],a[i]-1,…,a[j]的形式的最大价值 dp[i] 前i个的最大价值 #include &lt...

2018-06-26 19:46:41 509

原创 bzoj4198 [Noi2015]荷马史诗(Huffman编码+stl)

题目给出的定义显然就是让我们求Huffman编码。 不过可能是K叉的,我们加几个0补全就好了。 为了满足第二个要求,贪心的权值相同时深度小的优先。#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 100010#define pi...

2018-06-26 14:20:31 223

原创 bzoj4199 [Noi2015]品酒大会(SAM+线段树)

这回换了个SAM写,SA的做法见:portal一开始以为可以做到线性…结果写了之后发现还是要挂棵线段树… 我们考虑对反串建SAM,搞出后缀树,这样任意两个后缀的lca就是他们的lcp。于是我们可以在每个lca处统计答案。 不过一个点可能会覆盖一段长度区间,所以要区间修改答案。 复杂度O(26n+nlogn)O(26n+nlogn)O(26n+nlogn)#include &lt;bi...

2018-06-26 14:16:27 348

原创 bzoj4184 shallot(线段树时间分治+线性基)

我们按时间建线段树,把所有数的存在时间求出来,一定是一个连续的区间,插到线段树对应区间上。线段树每个节点挂一个vector来存数。这样就把删除操作避免掉了。然后从上到下dfs一遍线段树,把每个叶子的线性基合并出来即可,复杂度O(nlognlogw)O(nlognlogw)O(nlognlogw) 空间O(nlogn+nlogw)O(nlogn+nlogw)O(nlogn+nlogw)#inc...

2018-06-25 21:33:11 289

原创 CF607B Zuma(区间dp)

给定一个序列,每次操作可以选择一个回文子串删掉,问把整个序列删除所需的最小操作次数。我们区间dp,f[i][j]表示把i~j都删掉的最小花费 转移有两种: 1、i,j没有在一次被删掉,f[i][j]=f[i][k]+f[k+1][j] 2、a[i]==a[j],i,j在一次被删掉,那么在删i+1~j-1的最后一下时把i,j也带走就好了,因此就是f[i+1][j-1]#include &l...

2018-06-25 20:48:49 493

原创 CF346B Lucky Common Subsequence(LCS+kmp)

给定三个串A,B,C,求串A,B的lcs,要求不能包含C串作为子串。 f[i][j][k]表示A串前i个,B串前j个,lcs匹配到了C串的第K的个字母的lcs 转移和普通的lcs差不多,就是在往lcs上多加一个字符时,需要求一下新的lcs匹配到了C的那个字符,我们kmp预处理一下next数组即可快速找到。 复杂度O(n3)O(n3)O(n^3)#include &lt;bits/stdc...

2018-06-25 20:33:50 510

zjoi2015.zip

浙江省选 2015 zjoi 数据 题目zjoi2015.zip 2015浙江省省赛数据。

2018-02-23

国家集训队2004论文集

国家集训队 论文集 2004 OI。

2017-08-05

2013国家集训队清华集训

2013国家集训队清华集训资料。

2017-07-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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