做题小结
文章平均质量分 50
EMber _
人但有追求,世界亦会让路。
展开
-
bzoj2144 跳跳棋 二分+lca
这道题刚开始看以为是DP,,,我真是智障了。该DP的看成搜索,该二分的看成DP。。这状态有点危险。。 题意:现在有三个人a,b,c,每一个人可以跳过他左/右边的人,比如说一个人在x,一个在y,那么x可以跳到y+(y-x)(y>x),左边同理。。但是两个人之间不能有另一个人。 现在有三个目标位置和起始位置,让你计算最少的步数让三个人到达目标位置,并不要求人的顺序(即无论哪一个人都可以去任意的终点)原创 2016-08-15 21:17:02 · 739 阅读 · 1 评论 -
第二周总结
从上周开始制定了省选之前的刷题计划,执行的还不错,速度不快不慢。。主要是不能白刷题,要能融会贯通,还有掌握大概套路。。比如区间dp很多都跟矩阵连乘有关。。(可能是巧合),AC自动机如果不是dp一般都是暴力。树上dp就比较考思维,如果是虚树上dp的话就没那么大的思考难度,一般来说都是比较简单的树上dp,然后直接用lca的关系上虚树。 然后大概的感觉还是自己很弱,很多dp题目想的时候有大概思路,但是打原创 2017-02-19 15:23:59 · 210 阅读 · 0 评论 -
高斯消元&&线性基 算法小结
姿势不够多了,来学一学新姿势首先我们来讲高斯消元。。 一.高斯消元 高斯消元是一种实用的解多元方程组的一种解法,从严格意义上来讲,这是一种数学方法,在OI中也有较为广泛的应用,最为经典的就是用高斯消元求解线性基。高斯消元的时间复杂度为O(n^3)。具体我们来写个例子。。 现在有下列方程组: 我们先一个个消,先消去x。第一个方程x的常数项为2,那么方程(1)除以2,然后下面的方程在减去原创 2017-04-06 22:19:17 · 1255 阅读 · 0 评论 -
ISAP复习
随手瞎写,只为自己印象深刻,所以写得不好请多多包涵。。 ISAP,也就是improved SAP,是SAP的升级版本,在应对一些特殊情况时的运行速度非常优秀,比SAP快,但是在平均统计下速度应该和SAP差不多,一般来说出题人也不会故意去卡SAP(我觉得这卡不了吧)。我们知道无论是dinic,SAP还是ISAP都是建立在寻找增广路的基础上。不同之处只不过是在对于图的处理上。前置结构: d[i]:表原创 2017-03-29 21:28:42 · 418 阅读 · 0 评论 -
GDOI模拟总结4.11-4.13(实时更新)
今天策略严重失误QAQ,导致我直接将近垫底,,T3也没有切出来。。 8:00-8:45: 基本上都在看题,略略看了一下,发现T1大水,T2应该是码农题,T3好像是dp?或者点剖,T4感觉二分瞎搞。。 然后先开吗T1,大概1h码完+拍完,速度有点慢,,主要是一开始想法有点问题,然后修修补补,花的时间有点长。。 然后我就先把T4水法码完了,发现样例都过不了以后直接自我放弃了。。 回头看T2T原创 2017-04-11 22:25:10 · 279 阅读 · 0 评论 -
GDOI2017酱油记
真·划水选手。 Day 0 虚的很,,,SA什么的好像都忘得差不多了,一个上午全都在复习复习复习板子。。 manacher啊,左偏树啊,fft啊,虽然最后都没用上,然后中午腐了一会儿然后就上车了。 到了酒店,哇今年环境简直起飞,好的不行,饭堂的自助餐真是赞啊? 。。晚上丝毫不敢腐败,复习了一波板子然后就睡觉了。。 Day 1 。。早上6:40起床稍微有一点晚,饭店的自原创 2017-05-03 22:24:01 · 497 阅读 · 2 评论 -
GDOI四轮模拟Final Summary
四轮模拟已经过去,马上迎来了GDOI了. 在过去的四轮模拟中充分暴露了我的问题,包括心态策略以及水平问题… 综合来看,发挥一般,,第一,四轮发挥失误,第二三轮中规中矩. 细致分析: 在第一轮模拟开始时,我还不是很能适应比赛节奏,所以round1的前两天发挥都有不小的失误,无法正确抉择怼正解还是上暴力,第三天就好了一些. 第二轮模拟找到了自己的节奏,无法想到正解就打暴力,用心钻研部分原创 2017-04-27 10:57:03 · 266 阅读 · 0 评论 -
GDOI训练 暑假round 2 8.5-8.25
8.5 成功爆炸。 T1一开始以为是个水题,结果想了想发现好像没那么简单。 由于有一个n=6e4,又有一个n=5e5,导致我以为必须线性过,然后第一个小时压根没去想nlog。 后来我发现不对,这题线性太复杂,基本不可能做出来(我弱),然后算了算才发现原来O(nlogn)也能过,注意一下常数就好了。 那不就直接分治吗,这题还水一点,以前bzoj上做过一道更难一点的题。 然后就炸了。 用前原创 2017-08-05 15:57:29 · 236 阅读 · 0 评论 -
bzoj1857 SCOI2010传送带
Description在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为Cx,Cy原创 2016-08-14 15:17:54 · 428 阅读 · 0 评论 -
一维二维树状数组区间加与区间求和
在一般的情况下,对于区间加与区间求和,我们一般使用线段树。 树状数组在一般情况下,只能够单点查询,修改。 但是我们可以通过差分做到区间加或者区间求和(一维) 我们对于一个区间l,r,要求他们的和a[l]….a[r]。 设b[i]表示相邻两点之间的差(b[i]=a[i]-a[i-1]),那么对于sum(a[l]..a[r]) 明显有sum(a[l]..a[r])=(b[1]+b[2]+….+原创 2017-08-15 20:44:50 · 1393 阅读 · 0 评论 -
bzoj3244 NOI2013树的计数 神奇脑洞题+线段树
题意:给你两串序列,分别为dfs序和bfs序,让你求树的期望高度。 这题脑洞是真的大。。说实话我都不知道这道题的tag应该是什么。。 copy一下百度文库的题解 void copy(){ 我们可以发现,所求的树之所以会有很多种,是因为出现了这种情况: 对于A、B,A既可以做B的兄弟,又可以做B的父亲。 (显然其中的一个前提是A、B在dfs、bfs序列中都必须相邻) 而这样除去A,B的原创 2016-08-16 16:00:06 · 511 阅读 · 0 评论 -
51nod 最大M子段和 V1,V2,V3 dp 贪心 heap(bzoj2288)
题意:给一个长度为n的序列,要求选出m个不相交的部分,要求总和最大,如果m>= n个数中正数的个数,那么输出所有正数的和。。 V1:n,m<=5000. V2:n,m<=50000. V3:n,m<=500000.V1: 一个简单的DP。 明显有f[i][j]表示做到第i个,选择了j段。 那么可以推导: 新开一段f[i][j]=f[i−1][j−1]+a[i]f[i][j]=f[i-1原创 2017-10-17 17:25:34 · 412 阅读 · 0 评论 -
优先队列 重载运算符详解
由于不是很懂priority_queue的细致操作,以及不再感受被greater和重载运算符统治的恐惧,所以我觉得有必要搞这么个东西。。。 首先头文件#include 然后priority_queue q,定义优先队列q。 其实我们都知道,虽然这玩意儿叫做优先队列,我们都不把它看成队列,一般都是用于处理堆有关操作。。 所以优先队列操作有插入,删除,查询,查找操作用来搜原创 2017-10-17 18:04:19 · 3584 阅读 · 5 评论 -
数论 公式集合
由于深感本人数论水平之差,防止大考翻车,在这里把常见的数列通项公式和递推公式列,以及各种奇奇怪怪的玩意儿都列出来。。 1.fibonacci F(0)=0,F(1)=1,F(n)=F(n−1)+F(n−2)(n>=2,n∈N∗)F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)2.Catalan h(n)=C(2n,n)/(n+1)(n=0,1,2,...原创 2017-10-12 16:24:55 · 1034 阅读 · 0 评论 -
NOIP模拟总结10.23-11.1
10.23 今天考的比较差。。。 T1比较脑抽。完全没想到用数组来模拟,然后无脑上了个trie,发现没办法维护,然后打了个一个可持久化trie,还用bitset加速合并和拆分,结果复杂到爆炸。。。正解其实就是个模拟+组合数学题目。。 T2一开始觉得是最短路,用样例试了一下发现有点问题。。然后觉得是斜率优化,但是由于T1花的时间太多,导致我根本没有时间打,只是打了个50分草草收场。。 T3没有原创 2017-10-24 08:07:17 · 362 阅读 · 0 评论 -
51nod 基础题小结
51nod的基础题除了部分几乎全部刷完了,感觉虽然是基础题但是还是有很多很好的模板题。 推荐的题目: P1057(fft) P1058斯特林近似 P1066,1069,1072,1073,1185博弈论 P1079CRT P1089MANACHER P1106其实你可用MILLER-RABIN P1135,1183,1240 其实都不难但是会对以后的学习有所帮助,就比如说P1240原创 2016-10-10 22:27:52 · 315 阅读 · 0 评论 -
增量最小生成树 NEU 1132 Renew MST Quickly
题意:给你一棵树,每一次加上一条边(询问之间互不干扰),让你求它的最小生成树。 n<=1000;q<=100000; 这是一道经典的增量最小生成树,就是模板题。因为是一棵树,所以每次加一条边的时候一定会形成一个环,所找的最小生成树一定不包含这个环上最大的点(MST的回路性质)。 代码:uses math;var i,j,k,p,n,m,x,y,z,sum,tot:longin原创 2016-09-23 20:37:12 · 460 阅读 · 0 评论 -
bzoj1562 NOI2009变换序列 二分图匹配(匈牙利)
我看见很多人因为题意很繁杂所以直接贴题面,这样是不对滴~~,其实题意没你们想的那么复杂。 题意:给你一个数N,设序列A=0,1,,,,N-1.现在让你求一个T序列。每一个a[i]都可以变为T[i],但是我们定义两个数之间的距离为min(abs(x-y),n-abs(x-y)),现在给出你所有的距离D[I]让你求出T序列。 刚开始我以为直接满足就可以,所以认为直接O(N)扫一遍判断距离的四种情况就原创 2016-08-16 20:56:00 · 411 阅读 · 0 评论 -
JZOJ4709 matrix 组合数
我推了三个小时还TM推错了。。我是真的不熟悉组合数啊。。 代码:const big=1000000007;var k,p,n,m,a,b,a1,b1,a2,b2,x,y:int64; l,r:array[0..100000]of int64; fac,fa:array[0..200000]of int64; ans:int64;原创 2016-08-17 19:40:46 · 245 阅读 · 0 评论 -
JZOJ 4700 简单DP
题意: 看着好像挺简单,就是把限制换了个样子,事实上。。。 还是很简单。 我不会告诉你们我二十分钟就打完但是交的时候网络挂了导致我这题0分 题解: uses math;var i,j,k,p,n,m,ans:longint; v,w:array[0..100000]of longint; f:array[0..5000,0..5000]原创 2016-08-17 21:11:36 · 266 阅读 · 0 评论 -
JZOJ4711Binary 树状数组+二进制处理
这题花了我一个下午+半个晚上,结果改到最后我发现是空间开小了。。。mdzz 好累啊,,我直接贴了。。 题解: 代码:var //i,j,k,p,n,m:longint; c:Array[0..21,0..2150005]of longint; a:Array[0..100005]of longint; b:array[0.原创 2016-08-17 21:16:43 · 273 阅读 · 0 评论 -
BZOJ4653 NOI2016DAY2T1区间 线段树
题目:Description在数轴上有 n个闭区间 [l1,r1],[l2,r2],…,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间 [li,ri],都有 li≤x≤ri。 对于一个合法的选取方案,它的花费为被选中的最长区间长度减去被选中的最短区间长度。区间 [li,ri] 的长度定义为 ri−li,即原创 2016-08-18 20:16:28 · 384 阅读 · 0 评论 -
JZOJ4714公约数 找规律
题意:给你一个数N,问你在1-n的范围内有对少对数(x,y)保证gcd(x,y)=a xor y; 一开始看到的时候以为要拆位,想想觉得不对。然后把1-5之间的所有的对数列出来。。就会发现一个很好玩的性质: 如果 a xor b = gcd(a, b) = c 则 c = a - b 那不就变得很简单了吗,之间枚举a和c就可以了,结果比赛的时候傻逼了,没看见n<=10^7,因为直接上了gcd导原创 2016-08-19 16:39:17 · 259 阅读 · 0 评论 -
JZOJ4715树上路径 点分治
这居然是联赛题我一脸懵逼。。根本没往那方向上想。 题目大意: 让你求树上最短的路径,但是路径长度必须>=l,<=r,n<=10^5,r-l<=10^6,l,r<=10^9; 其实是我点分治没怎么打过,这其实是一道很一眼的点分治的题。。我是懵比了。。 可以算是模板题吧,我是直接点分治莽一波,然后就过了,题解还说是二分,我比赛时候就想到是二分。。mdzz。 代码:#include<iostre原创 2016-08-19 16:45:45 · 410 阅读 · 0 评论 -
公告
感觉一脸懵逼,太久没上博客,结果忘记用户名了,拿qq随便注册了一个,大家不要在意,随便看看就好了。原创 2016-08-13 20:34:54 · 211 阅读 · 0 评论 -
bzoj2002[Hnoi2010]Bounce 弹飞绵羊 块状链表学习小记
mdzz刚写了一次不知道怎么不见了。。醉了。 算了重新写一次吧,lct出门左转不送~~ Description某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,原创 2016-08-13 20:50:14 · 317 阅读 · 0 评论 -
Codeforces 526F 分治
说实话这题挺简单的(知道题解以后),但是一般人做的时候脑洞不大一点还不一定做得出来。 显然,题目可化简为:给定 N 个数的一个排列,问这个序列中有多少个子区间的数恰好是连续的。 进一步可以化为:有多少种情况使得,相邻的 k 个数中最大值和最小值的差小于等于 k-1。 大致有两种解法,一种是分治,一种是线段树。 这里主要讲一下分治的解法。 考虑分治,对于当前区间[L,R],记区间中点为 mi原创 2016-08-13 21:01:11 · 860 阅读 · 0 评论 -
51nod 1485字母排序
这题目的原题是CF 558E但是加强了。 问题非常简单,给定一个长度为n的字符串S,有q个操作,每次操作的形式为 i j k,表示对从i到j的这一段子串进行排序,如果k=1进行非降序排序,否则进行非升序排序。 输出最后的字符串。 样例解释:Input 单组测试数据。 第一行有两个整数n, q (1 ≤ n ≤ 10^5, 0 ≤ q ≤ 50 000),表示字符串的长度和操作次数。原创 2016-08-13 21:24:30 · 896 阅读 · 4 评论 -
(BestCoder Round #59 (div.1) B)简单DP
(改编版,题意相同) Description火神为了检验zone的力量,他决定单挑n个人。 由于火神训练时间有限,最多只有t分钟,所以他可以选择一部分人来单挑,由于有丽子的帮助,他得到了每个人特定的价值,每个人的价值由一个三元组(a,b,c)组成,表示如果火神在第x分钟单挑这个人(x指单挑完这个人的时间),他就会得到a-b*x的经验值,并且他需要c分钟来打倒这个人。 现在火神想知道,他最多原创 2016-08-14 15:25:05 · 275 阅读 · 0 评论 -
HDU5283 线段树
题意就不讲了,挺好理解的。。暴力很好打。。 其实正解一眼看出来是线段树。。。 题目关键在于在 x 轴和 y 轴上,鱼的坐标变化都是单调的,因为 d 是正值。我们把在一个 矩形内部有多少个点的询问拆分成四个在某个点的左下角有多少个点的询问,然后用一棵线 段树维护鱼的 x 坐标,一棵线段树维护鱼的 y 坐标。对于移动操作,在对应的线段树上进行 区间更新,更新完成后询问该区间内的最大值,若最大值原创 2016-08-14 15:33:36 · 571 阅读 · 0 评论 -
bzoj2186【Sdoi2008】沙拉公主的困惑 数论:欧拉筛法,线性逆元
求在1到n!范围内,与m!互质的数的数量,由于答案太大,只需计算答案对R取模之后的答案即可,保证R是一个质数 对于30%的数据,n<=10,T<=30 对于60%的数据n<=3000000,T<=10000 对于100%的数据n<=10000000,T<=10000 保证R为质数,m<=n,n < R 题意很简单,,看见n<=10000000就知道要预处理。。 ans=phi(m!)*n原创 2016-08-14 21:20:22 · 333 阅读 · 0 评论 -
多重背包的优化 二进制/单调队列解析
由于做题的时候老被这玩意儿卡住的我很不爽,决定写个blog来加深自己的印象以及不用到处找资料回忆。 多重背包的问题的具体描述如下: 给出一个体积为v的背包,有n个物品,每个物品可以选c[i]次,问最多能得到多大的代价。 直接做DP的复杂度是n*v*max(c[i]),这显然无法承受正常难度的数据范围。 然后我们考虑优化。 首先来看稍微简单一点的二进制优化。 很久以前打的就不要纠结是不是c原创 2017-10-25 22:32:23 · 667 阅读 · 0 评论