自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无尽

The road ahead will be long. Our climb will be steep.

  • 博客(326)
  • 收藏
  • 关注

原创 BZOJ 4514 [Sdoi2016]数字配对

费用流——写这一篇文章的原因不是因为不会这一题,而是我发现我多年以来(?)滚动数组都用错了。如果令可以配对的两个点连边,仔细研究可以发现图中一定没有环。图一定是森林。于是可以构出二分图,用费用流解决问题。然后我就TLE飞了,调了一个小时,才发现原因,好气啊。我想说的是,我从开始用滚动数组,直到现在,滚动数组的姿势都错啦!假设head是头指针,tail是尾指针,队列为q[N]原本我习惯于 :for(i

2016-11-26 20:32:35 420

原创 NOIP2016 滚粗记

day 0一整个上午和机房的众神犇一起敲模板(然而敲的模板NOIP全都没用上,这就很尴尬了)。 下午坐校车去屏东中学看考场。屏东中学一定是我见过的最小的机房了。键盘摆在桌面上 + 一大块隔板,完全没有什么地方能演算。。。滚粗day 1第一题很快敲完,有点虚。 第二题毫无想法,day1t2会这么难?回想去年的这一题还只是个找环呢。。。我觉得一定是我想复杂了,然后就使劲想,使劲想。后来想出来一个算法

2016-11-21 18:09:51 820

原创 高精度模板

本模板资瓷正数范围内的以下操作,不资瓷负数(其实加一个符号判定就可以了): 打钩√表示资瓷,打叉x表示暂时不资瓷高精度 + 整数 x(懒得打,也许以后我会补上?) 高精度 + 高精度 √高精度 - 整数 √ 高精度 - 高精度 √高精度 * 整数 √ 高精度 * 高精度 √高精度 / 整数 √ 高精度 / 高精度 √(BASE调成10后复杂度才是对的) 高精

2016-11-18 21:42:30 705

原创 UOJ 117 欧拉回路

欧拉回路先判定是不是欧拉回路,是的话直接搞即可。注意判定的时候有向图于无向图的条件有区别。无向图要求所有点度为偶数,有向图要求所有点入度等于出度。#include#define N 100005#define M 200005using namespace std;int last[N], ecnt = 1, cnt, ans[M], in_deg[N], out_deg[N...

2016-11-13 13:02:38 1161 3

原创 BZOJ 1190 [HNOI2007]梦幻岛宝珠

分组背包DP看到w很大,不能直接做。但是w=a*2^b,且a,b都不大,就是让我们用2^a分组。分组之后先组内DP求出f[i][j]表示仅在2^i组内,容量为2^i*j时的最大价值。然后组间DP再求出一个f[i][j]表示2^0~2^i组内,容量为 j*2^i+(w&((1<#include<cstdio>#include<cstring>#include<algorithm>#define

2016-11-09 21:30:48 895

原创 BZOJ 3832 [Poi2014]Rally

拓扑排序+堆暴力的做法是枚举删掉哪一个点,然后DP出删掉这个点之后的最长链长度。那么我们来挖掘一下删点之后的最长链的性质。记删点为x,记所有能走到x的点集为S1, 所有x能走到的点集为S2,注意到最长链上可能存在一些点属于S1或S2,同时也一定存在一些点既不属于S1,也不属于S2!(反证法)于是我们考虑能不能通过这些既不属于S1也不属于S2的点来找到当前最长链,这启发我们应该把最长链信息记录在中间,

2016-11-09 11:02:24 317

原创 NOIP提高组历年试题狂做

看着还有半个月就NOIP了,然而历年的NOIP题还很少做,赶紧补一补啊。在网络上找到历年NOIP的全套题+评测真的不容易呀,强烈推荐Vijos!因为我比较懒,就不贴代码了,主要讲一下做法。

2016-11-05 18:22:47 5869

原创 CF 70E Information Reform

树形DP因为博主蒟蒻变懒了,以后就只写一些不好想的(丧)题题解,而不会啥题解都写了吧。。。注意到每一个点都要找一个点和自己对应,并产生代价,于是可以记f[i][j]表示i强制对应j时i子树的最小答案(包括建j的k代价),再记一个best[i]表示j取到best[i]时,f[i][j]最小f[i][j] = Sigma { min( f[s][j] - k, f[s][best[s]] ) }这样第一

2016-10-31 16:13:23 469

原创 BZOJ 2400 Spoj 839 Optimal Marks

最小割显然按位来做。我们可以发现我们实际上是在把所有点划分成两个集合,两个集合之间可能有交叉的代价,这就类似于最小割模型!要求点权和最小可以把代价放大到10000并且将所有待定点与s(表示0集合)连一条代价1的边,这样就可以有主次关系了。#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#define N 5

2016-10-29 13:55:11 364

原创 BZOJ 2657 [Zjoi2012]旅游(journey)

DP最长链不会证明的玄学题。我们令每个三角形变成一个点,相邻三角形连边,一定是构成一棵树(如果有环,那么中间就会有端点,显然不行)然后就跑最长链了(不会证明)#include<cstdio>#include<algorithm>#include<map>#define N 200005using namespace std;map<pair<int,int>,int> mapp;stru

2016-10-29 13:52:03 343

原创 BZOJ 3333 排队计划

每排序一次,减少的只能是在p的右边由所有小于等于h[p]的数构成的逆序对。用线段树维护区间最小值,没个数只需访问一次,总时间复杂度O(nlogn)#include<cstdio>#include<algorithm>#define N 500005#define ll long long#define lowbit(_i) (_i&-_i)using namespace std;stru

2016-10-29 13:49:05 372

原创 UOJ 82 [UR #7]水题生成器

贪心发现n!的约数也就几万个,然后就可以贪心,每次找最大的减,一定能减完。证明:我不会官方题解:http://vfleaking.blog.uoj.ac/blog/219#include<cstdio>#include<algorithm>#define ll long longusing namespace std;int prime[9]={0,2,3,5,7,11,13,17,19},

2016-10-23 12:23:00 384

原创 BZOJ 2178 圆的面积并

自适应辛普森积分别的不会,裸上辛普森#include<cstdio>#include<cmath>#include<algorithm>#define N 1005using namespace std;struct circle{ double r, x, y;}c[N];struct interval{ double l, r; friend bool

2016-10-22 10:26:25 354

原创 BZOJ 4561 [JLoi2016]圆的异或并

扫描线一个圆拆成左右端点。扫到左端点时,加入圆的上下端点,在set里找前驱(在此圆上方的第一个上端点或下端点)。如果前驱是上端点,说明此圆被内含,否则相离。扫到右端点时删除此圆的上下端点。#include<set>#include<cmath>#include<cstdio>#include<algorithm>#define N 200005#define ll long longus

2016-10-22 10:15:53 517

原创 BZOJ 3689 异或之

TRIE树+堆如果只求最小的,我们可以建出TRIE树,对每一个数都跑一边求第二小(最小的是自己异或自己),这样一定包含了所有数的异或最小值,然后找最小的即可。如果还需要求第二小,在排除第一小的情况下,我们把组成第一小的那个数在TRIE树上求一个第三小,这样同样依然包含了所有数的当前异或最小值,以此类推,堆维护即可。注意a^b = b^a,也就是说一个值会出现两次,所以k应取k*2#include<c

2016-10-22 10:11:36 305

原创 BZOJ 1419 Red is good

期望DPf[i][j]表示i张红牌,j张黑牌从 f[i-1][j],f[i][j-1],0 转移过来,注意下界为0要判,因为取成负数肯定不优#include<cstdio>#include<cstring>#include<algorithm>#define N 5005using namespace std;double f[2][N];int main(){ int n,

2016-10-22 09:58:47 283

原创 BZOJ 2820 YY的GCD

莫比乌斯反演不难推出关于每一个质数的一个式子,然而显然会T,需要继续推下去。详见:http://blog.csdn.net/wzq_QwQ/article/details/46952469#include<cstdio>#include<algorithm>#define N 10000005#define ll long longusing namespace std;bool notp

2016-10-22 09:52:21 334

原创 UOJ 244 短路

贪心好惨啊,这题考场上打的是正解,但是把INF设太小了,直接爆零。改完INF就A了。。。题解:http://matthew99.blog.uoj.ac/blog/2085#include<cstdio>#define N 100005#define ll long longusing namespace std;ll pre[N], f[N], sum[N], a[N];int main(

2016-10-22 09:39:16 383

原创 SPOJ GSS 1~8

GSS是一系列查询区间最大子段和及其变种的题目。GSS 1 ~ 8 的题号分别是:1043 & 1557 & 1716 & 2713 & 2916 & 4487 & 6779 & 19543 目前完成进度:1 (好惨啊,慢慢做吧……)SPOJ 1043 GSS 1应该是不难的。我们假设一个区间的最大子段已经找到,往区间里随便放一条分界线。有两种情况:一是最大子段在分界线的某一边,二是最大子段经过分界

2016-10-22 00:01:04 1334 1

原创 BZOJ 3522 & 4543: [POI2014]Hotel

指针优化树形DPBZOJ3522的n只有5000,可以随便用一个n^2的大暴力搞过去,就不讲了。BZOJ4543好丧啊,看到题解我当时就震惊了,题解点我n有十万,使人一看到就会放弃一些树形DP的思路,而正解正是树形DP,难点就在内存和时间的优化。可以证明复杂度是O(n),详见上面的题解呀。#include<cstdio>#include<cstring>#define N 5005#defin

2016-10-21 23:48:41 526

原创 BZOJ 3991 [SDOI2015]寻宝游戏

set+dfs序+LCA题解:http://blog.csdn.net/regina8023/article/details/45502279显然(也就是说我不会严谨证明),最终答案一定是所有有宝物的点之间相连形成的树的边权和的两倍。而且不论从哪个点出发,最短路长度都一样,都是边权的两倍(因为无论从起点往哪里走,总是要回来的)。那我们就钦定DFS序最小的点为起点,然后发现只要沿着DFS递增的顺序走,

2016-10-21 23:37:40 554

原创 UOJ 207 共价大爷游长沙

LCT看见树边可以删除和加入,就会直接想到用LCT,但是如何用LCT维护如题所述的边的信息呢?考虑一个询问(u,v),如果他是合法的,那么所有(共价大爷走的)链都一定经过它。换一个角度,也就是说所有链的两个端点都一定分居这条边两侧!这提醒可以我们从端点入手,而不是边。如何判断所有所有链的两个端点是否分居两侧?用异或值!我们对于每一个加入的链,在链的两端点异或上一个随机大整数。对于询问(u,v),假设

2016-10-21 23:28:05 937

原创 BZOJ 3295 [Cqoi2011]动态逆序对

树状数组套线段树线树状数组维护一整个序列,线段树维护当前区间的元素取值。单次操作O((logn)^2)题不错,就是有点卡内存- -#include<cstdio>#include<cstring>#define N 100005#define lowbit(_i) (_i&-_i)#define ll long longusing namespace std;int n, a[N], p

2016-10-18 09:29:49 265

原创 UOJ 245 [UER #7]天路

近似算法+单调队列考场上完全没想到这种脑洞呀。我们发现一个有趣的性质,随着i的增加,f[i]一定是单调不降的,而且加上答案允许5%的误差,我们就可以枚举答案。每次枚举的下一个答案为 now = max(now+1, now*1.05),这样可以保证误差在容许的范围内。对于一个枚举出来的答案,我们找出极差不超过它的最大区间有多大(最大最小值的单调队列搞一搞),那么小于这个区间长度的答案肯定不会超过它。

2016-10-17 09:06:50 365

原创 UOJ 49 [UR #3]铀仓库

二分官方题解首先那两个重要结论是不难发现的。接着我们就会考虑枚举每一个放箱子的位置,然后二分范围,再二分具体到哪一个箱子位置。这就是算法二,应该是没什么办法优化,注定要TLE的。。。我们考虑把用一定时间取尽量多的箱子变为取一定的箱子用最少的时间,这样可以二分答案了。注意到一个重要性质,如果确定要取箱子的数量,那么取箱子的x坐标区间是随s从1到n而单调的,于是套上双指针扫描即可- -计算的时候比较麻烦

2016-10-16 14:44:12 528

原创 UOJ 48 [UR #3]核聚变反应强度

GCD+质因数分解我们可以发现sgcd一定是gcd除以自己的一个最小质因数。于是我们考虑如何找到这个最小质因数。枚举的时间复杂度是不对的。(但是听说能有很多分?)仔细观察就会发现,我们每次都是在做gcd(a1,ai)那么gcd的质因数一定也都是a1的质因数,那么预处理出a1的所有质因数即可,只有log(a1)个。时间复杂度就是O(sqrt(a)+n*log(a))。一直有地方忘记开LL,吃枣药丸#i

2016-10-16 11:28:11 524

原创 UOJ 51 [UR #4]元旦三侠的游戏

博弈论+记忆化搜索这题没有什么好的构造方案,于是考虑直接从必胜态或必败态的关系入手f[a][b]=1或-1表示必胜或必败态,当且仅当f[a+1][b]=1&&f[a][b+1]=1,f[a][b]是必败态,然后就可以记忆化搜索啦。a,b很大怎么办?实际上如果a>sqrt(n),一定有b=1,直接就可以根据奇偶性出解了。。。#include<cstdio>#include<cmath>#defin

2016-10-15 21:59:16 447

原创 UOJ 22 [UR #1]外星人

DP+推式子+组合数+逆元我们发现如果ai<=aj,那么x mod ai = x mod ai mod aj,即模了小的数,大的数模不模就都一样。于是我们发现x的值的变化仅和小于等于x的a有关。于是可以记f[i]表示x=i的最大答案,这个可以O(nx)DP出来,第一问解决。我们发现从i变化到i%a的过程中需要的序列里,(i%a , i]区间里的所有模数可以任意排布在a的后面而不会影响结果(因为这里面

2016-10-15 18:12:25 474

原创 BZOJ 1068 [SCOI2007]压缩

区间DP题解:http://blog.csdn.net/qpswwww/article/details/44173265其实这题很久以前就做了,一直没空填坑#include<cstdio>#include<cstring>#include<algorithm>#define N 55using namespace std;char s[N];int f[N][N][2];const i

2016-10-15 15:34:26 344

原创 BZOJ 4552 [Tjoi2016&Heoi2016]排序

二分+线段树本蒟蒻完全想不到二分啊。。。二分答案x。设小于等于x的值为0,大于x的值为1。排序的时候我们只关心x是否会出现在P位置上,而x的位置只和区间内小于它的数和大于它的数有关,所以不关心其他的值具体是多少,直接线段树维护赋值查询即可。#include<cstdio>#define N 100005using namespace std;struct opt{ int l, r,

2016-10-15 15:16:58 309

原创 BZOJ 2725 [Violet 6]故乡的梦

堆优dijkstra+线段树膜:http://blog.csdn.net/popoqqq/article/details/47841783为了表达清楚,记不删边时最短路为E1,删去某一条E1上的边之后的最短路为E2显然E2一定是形如:S->沿着E1走到某一个在E1上点的S’->沿着不属于E1的一些边走到某一在E1上点的T’->沿着E1走到T而且可以证明,上面提到的E2中不属于E1的那些边(组成一条路

2016-10-15 14:01:04 573

原创 BZOJ 2115: [Wc2011] Xor

贪心求线性基+找环挂题解:http://www.cnblogs.com/BLADEVIL/p/3484486.html任何复杂环一定能由简单环异或得到任何一条1~n的路径的异或值都可以通过其他的1~n的路径异或一些环得到然后求出所有环,搞出线性基,贪心一下即可简单环的个数一定是m-n+1#include<cstdio>#include<algorithm>#define N 50005#def

2016-10-15 11:09:33 316

原创 BZOJ 2125 最短路

树剖LCA+SPFA+tarjan找简单环静态仙人掌最短路没啥好说的,要分类讨论,细节要处理清楚…(我这个SB细节没弄好WA飞了) 膜:http://blog.csdn.net/popoqqq/article/details/43876907#include<cstdio>#include<queue>#include<cstring>#define cmin(u,v) (u)>(v)?(u

2016-10-15 11:00:14 393

原创 BZOJ 1131 [POI2008]Sta

树形DP记f[i]为i子树到i距离和 记g[i]为所有节点到i距离和 DP两次即可#include<cstdio>#define N 1000005#define ll long longusing namespace std;struct edge{int next,to;}e[N<<1];int ecnt=1, last[N], siz[N], n, pos;ll f[N], g

2016-10-15 10:55:31 389

原创 BZOJ 3190 [JLOI2013]赛车

斜率排序+半平面交根据物理知识,我们可以用距离,速度,时间写出一个一次函数,那么本题就是问从y轴正方向无限远能看见多少条线(包括重合!),于是维护下凸壳#include<cstdio>#include<algorithm>#define N 10005using namespace std;struct Line{ double k, b; int id; frie

2016-10-15 10:40:22 345

原创 UOJ 20 [NOIP2014]解方程

取模判根题解:http://www.cnblogs.com/JSZX11556/p/4907703.html注意到 f(x) mod p = f(x%p) mod p. 所以枚举0~p-1即可我是智障 f不能只开一维 因为对于一个X f(x mod pi) mod pi在不同pi的取模之下答案不一样 做到后面的pi会覆盖前面的pi的结果 #include<cstdio>#include<

2016-10-08 12:25:41 472

原创 UOJ 147 & 151 [NOIP2015]斗地主

暴搜DFS当初在NOIP2015考场上的时候还是too young,这题只拿了15分,那时候什么都不懂……考虑到如果不出任何顺子,那么我们可以贪心地出牌,肯定能得到最优解。于是我们在DFS爆搜的时候只要考虑顺子就好了。这样确实可以A掉UOJ147(因为数据比较弱?)然而UOJ151是数据加强(果然好强…),交上去就跪了。原因是有一些点是类似于把两个炸弹拆成四带二来打之类的……加了好多特判才A……下面

2016-10-07 15:56:19 409

原创 UOJ 150 [NOIP2015]运输计划

二分+树链剖分+差分要求最远的值最小,于是我们可以考虑二分答案。对于每一个二分出来的lim,我们只需要判断所有路径(指运输计划里面所有的路径)中长度大于lim的所有路径是否存在一条公共边,使得最长路径减去它可以小于等于lim(如果最长的可以,那么短的也肯定可以)那么怎么求这条边?我刚开始的想法是树剖+线段树,对每一条超过lim的路径上的边的都记+1,然后暴力枚举边来找公共边。但是这样是O(nlog3

2016-10-06 14:47:27 693

原创 UOJ 58 [WC2013]糖果公园

树上莫队题解详见VFK大爷的 : http://vfleaking.blog.163.com/blog/static/174807634201311011201627/orz vfleaking orz vfleaking orz vfleaking orz vfleaking 这题在本机对拍的时候,忘记在分块里面初始化1,导致所有节点都没有进行分块操作。结果自己拍大数据跑的贼快,大点都只要一秒不

2016-10-05 22:11:32 600

原创 UOJ 110 [APIO2015]Bali Sculptures

贪心+二进制按位DP我们需要让答案尽量小,即让答案的二进制位的高位尽量为0。可以一位一位做,同时要保证前面做过的位的答案不变。前4个子任务,记f[i][j]表示前i个数分成j组,且符合当前答案的方案是否存在。那么它可以从一个合法的f[k][j-1] (k < i) 转移过来。这样是O(n^3*logn)的。第5个子任务用上面的方法会T。考虑到A=1,即没有分组下界。记g[i]表示前i个数符合当前答案

2016-10-05 15:09:06 357

空空如也

空空如也

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

TA关注的人

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