- 博客(42)
- 收藏
- 关注
原创 Meet in the middle算法总结 (附模板及SPOJ ABCDEF、BZOJ4800、POJ 1186、BZOJ 2679 题解)
本文章已迁移至:https://www.cnblogs.com/birchtree/p/10133392.html
2018-12-18 17:39:22
381
2
原创 BZOJ4990 (LCS转LIS)
题面分析首先可以看出一个简单的DPdp[i][j]表示序列a前i个与序列b前j个连线数量dp[i][j]=max(dp[i−1][j],dp[i][j−1],dp[i−1][j−1](∣a[i]−b[j]∣<=4))dp[i][j]=max(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]( \left| a[i]-b[j]\right|<...
2018-10-24 20:02:00
257
原创 BZOJ 4987 (树形DP)
###题面https://www.lydsy.com/JudgeOnline/problem.php?id=4987###分析先考虑贪心,显然k个节点形成一棵树求出树的直径,显然直径应该只被经过1次(最长的边应该走最少次数),其他非直径上的边被经过2次整体的形状应该类似一条链上接着许多子树考虑树形DP子状态:dp[x][i][j](j∈{0,1,2})dp[x][i][j]( j\i...
2018-10-24 19:54:33
703
原创 Codeforces 1058C(思维+最大公因数)
题面传送门分析引理1:三角形的面积×2\times 2×2一定是整数由坐标系中的三角形面积公式S=12(x1y2+x2y3+x3y1−x1y3−x2y1−x3y2)S=\frac{1}{2}(x_1y_2+x_2y_3+x_3y_1-x_1y_3-x_2y_1-x_3y_2)S=21(x1y2+x2y3+x3y1−x1y3−x2y1−x3y2)显然得证故若2...
2018-09-24 09:54:28
605
3
原创 Codeforces 1047C (线性筛+因数分解)
题面传送门分析1.暴力做法可以O(namax)O(n\sqrt {a_{max}})O(namax)的时间内分解出所有数的质因数,然后统计出现次数最多且次数不为n的质因数,设最多出现次数为x(x≠n)x(x \neq n)x(x̸=n),然后把其他的数去掉就可以了,答案为n−xn-xn−x例:n=4,a={6,10,15,30}n=4,a=\{6,10,15,30\}n=4,a=...
2018-09-22 09:19:39
531
原创 Codeforces 1042C (贪心+模拟)
题面传送门分析思路简单,但代码较复杂的贪心分类讨论:有0负数有奇数个:将绝对值最小(实际最大)的负数和0全部乘到一起,最后删掉0负数有偶数个:将0全部乘到一起,最后删掉0没有0负数有奇数个:将绝对值最小(实际最大)的负数删掉负数有偶数个:不删最后把剩下的数依次乘在一起即可代码#include<iostream>#include<cst...
2018-09-18 18:14:14
233
原创 BZOJ 1875(DP+矩阵快速幂)
题面传送门分析容易想到根据点来dp 状态转移方程为dp[i]=∑(i,j)∈Edp[j]dp[i]=∑(i,j)∈Edp[j]dp[i]=\sum _{\left( i,j\right) \in E}dp\left[ j\right] 但这样得出的结果是错误的,因为它没有考虑一个点经过多次的情况因此,我们按边来dp,因为每条边只能经过一次,所以不会出现上面的问题 将无向边...
2018-08-29 17:48:40
247
原创 BZOJ 4552(二分+线段树+思维)
题面传送门分析此题是道好题! 首先要跳出思维定势,不是去想如何用数据结构去直接维护排序过程,而是尝试二分a[p]的值 设二分a[p]的值为x 我们将大于x的数标记为1,小于等于x的数标记为0 则整个序列只由01组成,记为b 将一个区间升序排序,则相当于将1全部移到右边,0全部移到左边,降序排序反之 例: a={1,6,5,2,4,3}.x=4 标记后的序列b为{0,1,...
2018-08-29 17:03:48
202
原创 BZOJ 3252题解(贪心+dfs序+线段树)
题面传送门分析此题做法很多,树形DP,DFS序+线段树,树链剖分都可以做 这里给出DFS序+线段树的代码 我们用线段树维护到根节点路径上节点权值之和的最大值,以及取到最大值的节点编号x 每次从根节点走到x,将点归0,再把最大值累加 然而,修改操作怎么做呢? 这里当然可以树剖,但是还有代码量更小的做法 从x往父亲跳,每次将子树中的节点值都-v(v为当前节点的权值,当前节点权值...
2018-08-22 20:17:21
195
原创 BZOJ 1878(离散化+线段树)
题面传送门分析首先我们观察到区间范围较大,而区间个数较少,考虑离散化,将所有询问按照右端点进行排序 离散化之后研究区间颜色个数变化的规律 当我们处理到第a[i]个段时,设a[i]上一次出现的地方为last[a[i]],则last[a[i]]之前的颜色出现次数不受影响. 首先遍历右端点范围r,用线段树维护每一位到r的区间中有多少种颜色,记为c 则处理到第a[i]个段时,将(las...
2018-08-22 20:06:12
142
原创 Codeforces 843D (Dijkstra算法的优化,动态最短路)
题面(http://codeforces.com/problemset/problem/843/D) 题目大意: 给定一张带权无向图,有q次操作 操作有两种 1 v 询问1到v的最短路 2 c 将边l1,l2…lcl1,l2…lcl_1,l_2 \dots l_c 的权值增加1分析暴力的做法是每次重新建图,然后跑一次最短路 这样的时间复杂度是O((n+m)qlog2n+Σc...
2018-08-17 09:41:18
264
原创 Codeforces 429E(欧拉回路)
题面传送门 题目大意: 有n条线段,每条线段染红色或蓝色,使得数轴上每个点被红色线段覆盖的次数与被蓝色线段覆盖数差的绝对值小于等于1。输出染色方案。分析题意其实可以这样理解: 一段初始全为0 的序列a,给区间[li,ri][li,ri][l_i,r_i]+1或-1,使得操作结束后序列中的所有位置绝对值不超过1 可采用差分的思想,给al+1,ar+1−1al+1,ar+1−1a_...
2018-08-17 09:01:24
237
原创 BZOJ 1085(IDA*)
题面传送门分析首先,直接搜索肯定会TLE 很容易想到用迭代加深的方法,限定搜索深度 但是,这样仍然不够,需要用启发式的方法优化 我们设计一个估价函数f(x)=g(x)+h(x)f(x)=g(x)+h(x)f(x)=g(x)+h(x) g(x)g(x)g(x)是初始状态到当前状态的实际代价 h(x)h(x)h(x)是当前到目标的估计代价 如果f(x)=g(x)+h...
2018-08-17 08:30:17
190
原创 Codeforces 916E(思维+dfs序+线段树+LCA)
题面传送门 题目大意:给定初始根节点为1的树,有3种操作 1.把根节点更换为r 2.将包含u,v的节点的最小子树(即lca(u,v)的子树)所有节点的值+x 3.查询v及其子树的值之和分析看到批量修改子树,我们想到将树上操作转化为区间操作 通过DFS序我们可以实现这一点. 对于每个节点x,我们记录它在前序遍历中的位置l[x],再一次回到x时的序号r[x],则x及其子树的区...
2018-07-29 17:11:21
299
1
原创 Codeforces 396C (DFS序+线段树)
题面传送门 题目大意: 给定一棵树,每个点都有权值,边的长度均为1,有两种操作 操作1:将节点u的值增加x,并且对于u的子树中的任意一个点v,将它的值增加x-dist(u,v)*k, dist(u,v)表示u,v之间的距离 操作2:查询节点u的值分析这类题目需要用到一个重要的思想:将树上操作转化为区间操作 通过DFS序我们可以实现这一点. 对于每个节点x,我们记录它在前序遍...
2018-07-29 16:04:45
370
1
原创 Codeforces 191C (LCA+树上差分算法)
题面传送门 题目大意: 给出一棵树,再给出k条树上的简单路径,求每条边被不同的路径覆盖了多少次分析解决这个问题的经典做法是树上差分算法 它的思想是把”区间”修改转化为左右端点的修改 在树上,每个节点初始权值为0,对于每条路径(x,y),我们令节点x的权值+1,节点y的权值-1,节点LCA(x,y)的权值-2 最后进行一次DFS,求出F[x]表示x为根的质数中各节点的权值之和,...
2018-07-07 14:15:51
646
1
原创 POJ 1905 题解(二分+几何)
题面传送门分析 如图:已知AB=L,弧AB=L(1+nC)AB=L,弧AB=L(1+nC)AB=L,弧AB=L(1+nC),M为AB中点,N为圆上一点,且ON垂直于AB于M,求MN 设半径为RRR,∠AOM=θ∠AOM=θ∠AOM=\theta(弧度),MN=xMN=xMN=x 则可列出方程组 ⎧⎩⎨⎪⎪⎪⎪2Rθ=L(1+nc)(1)Rsinθ=L2(2)x=R(1−cosθ...
2018-06-13 20:25:10
459
1
原创 Codeforces 990C (模拟+组合数学)
题面:传送门分析:此题O(n2l)O(n2l)O(n^2l)模拟肯定是会超时的(l为所有字符串总长) 我们想到对字符串进行一定的预处理,可以快速计算匹配 我们设每一个(的值为1,)的值为-1,规定 若只有)括号多了x个,则l[i]=r[i]=-x<0 若只有(括号多了x个,则l[i]=r[i]=x>0 那么如何求l[i],r[i]的值呢? 从左到右扫描字符串,用...
2018-06-11 17:35:49
369
原创 HDU 6070题解(二分+线段树)
题面传送门 此题的题意不是很清晰,要注意的一点是在区间[L,R]中,默认题目编号最后一次出现的时候是AC的 比如1 2 1 2 3 ,在区间[1,4]中,第3次提交时AC第1题,第4次提交时AC第2题,故比例为2/4=0.5 所以此问题可以转化为 给定一个序列,定义区间[l,r]的值为cnt(l,r)r−l+1cnt(l,r)r−l+1\frac{cnt(l,r)}{r-l+1},(c...
2018-06-11 16:39:48
218
原创 Codeforces 979D (STL set)(不用Trie简单AC)
题面:传送门 题目大意: 给定一个空集合,有两种操作: 一种是往集合中插入一个元素x,一种是给三个数x,k,s,问集合中是否存在v,使得gcd(x,v)%k==0,且x+v&amp;lt;=s若存在多个满足条件,则输出使得v⊕x最大的v。分析:首先,gcd(x,v)%k==0,由数论知识得该条件等价于x%k==0&amp;amp;&amp;amp;v%k==0 那么,我们怎么快速求出能整除k的v呢 ...
2018-06-02 19:47:29
159
原创 Codeforces 601B(贪心+斜率+组合数学+单调栈)
题面传送门 题目大意: L(h)的值是区间[L,R]内,abs(h[i]-h[j])/(i-j)的最大值。现在有q个询问,每个询问表示询问区间[L,R]内,所有子序列的L(h)的值的和分析将∣∣∣h[i]−h[j]i−j∣∣∣|h[i]−h[j]i−j|\left| \dfrac {h\left[ i\right] -h\left[ j\right] }{i-j}\right|想成...
2018-05-28 20:42:28
170
原创 Codeforces 984D 题解(DP)
题面传送门 题目大意: 给你一个计算区间f函数的公式,举例f(1,2,4,8)=f(1⊕2,2⊕4,4⊕8)=f(3,6,12)=f(3⊕6,6⊕12)=f(5,10)=f(5⊕10)=f(15)=15 然后现在给你一个数列,n<=5000,然后q个询问,q<=100000,每次询问[l,r]区间内f函数的最大值是多少分析此题可用DP求解 设dp[i][j]dp[i]...
2018-05-28 19:54:00
225
原创 Codeforces 515C 题解(贪心+数论)(思维题)
题目网址:http://codeforces.com/problemset/problem/515/CDrazil is playing a math game with Varda.Let’s define f(x)f(x) f(x) for positive integer x as a product of factorials of its digits. For example,...
2018-05-21 18:34:21
600
原创 Codeforces 475D 题解(二分查找+ST表)
题面:Given a sequence of integers a1, …, an and q queries x1, …, xq on it. For each query xi you have to count the number of pairs (l, r) such that 1 ≤ l ≤ r ≤ n and gcd(al, al + 1, …, ar) = xi. 题目大意...
2018-05-21 13:05:47
476
原创 POJ 1383题解(树的直径)(BFS)
题面Labyrinth Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 4997 Accepted: 1861 DescriptionThe northern part of the Pyramid contains a very large and complicated labyrinth. ...
2018-05-19 19:12:51
283
原创 Codeforces 691E题解 DP+矩阵快速幂
题面E. Xor-sequences time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given n integers a1, a2, …, an.A sequence of integers x...
2018-05-15 20:09:42
512
原创 Codeforces 833B 题解(DP+线段树)
题面B. The Bakery time limit per test2.5 seconds memory limit per test256 megabytes inputstandard input outputstandard outputSome time ago Slastyona the Sweetmaid decided to open her own bakery!...
2018-05-14 21:40:07
231
原创 Codeforces 840C 题解(DP+组合数学)
题面C. On the Bench time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output A year ago on the bench in public park Leha found an array of n numbe...
2018-05-09 19:02:18
545
原创 浅谈格雷码(Grey Code)在信息学竞赛中的应用
1.格雷码的概念1.性质格雷码(Grey Code),又叫循环二进制码或反射二进制码,是一种编码方式,它的基本特点是任意两个相邻的格雷码只有一位二进制数不同。 常用的二进制数与格雷码间的转换关系如下表: 从表中我们可以发现任意两个相邻的格雷码只有一位二进制数不同2.转换方法二进制数转格雷码的方法如下: 从左到右,每一位的格雷码值等于该位的二进制值异或(XOR)上该位左...
2018-05-05 22:40:53
1050
原创 HDU 4549题解 & luogu【模板】矩阵加速(数列)
M斐波那契数列 此题对数学基础要求较高 关于矩阵,请看矩阵乘法_百度百科 设A为m×pm×pm\times p的矩阵,B为p×np×np \times n 的矩阵,那么称m×nm×nm\times n的矩阵C为矩阵A与B的乘积,,其中矩阵C中的第iii 行第 jjj列元素可以表示为: 如下所示: 我们知道斐波那契数列的递推公式f(i)=f(i−1)+f(i...
2018-05-05 20:17:15
217
原创 HDU 3228 题解(最小生成树)(Kruskal)(内有详细注释)
题面:Island ExplorerTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1297 Accepted Submission(s): 247Problem Description A group of exp...
2018-02-19 09:36:07
626
1
原创 HDU 1880 题解(字符串哈希)
题面:魔咒词典Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14997 Accepted Submission(s): 3588Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒。据
2018-02-03 13:05:17
505
2
原创 HDU 5945 题解(DP)(单调队列)
题面:Fxx and game Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 2264 Accepted Submission(s): 600Problem Description Young theoretical com
2018-01-31 10:54:29
206
原创 HDU 1494 题解(DP)
题面:跑跑卡丁车 Problem Description 跑跑卡丁车是时下一款流行的网络休闲游戏,你可以在这虚拟的世界里体验驾驶的乐趣。这款游戏的特别之处是你可以通过漂移来获得一种 加速卡,用这种加速卡可以在有限的时间里提高你的速度。为了使问题简单化,我们假设一个赛道分为L段,并且给你通过每段赛道的普通耗时Ai和用加速卡的耗时Bi。加速卡的获得机制是:普通行驶的情况下,每通过1段赛道,可以获得
2017-12-31 22:51:50
304
原创 HDU 1174 题解(计算几何)
题面:爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2732 Accepted Submission(s): 1291Problem Description gameboy是一个CS高手,他最喜欢的就是扮演警察
2017-12-28 19:05:03
419
原创 HDU 5094 题解(状压BFS)
题面:Maze题目中文大意: 这个故事发生在“星际迷航”的背景下。 “星际争霸”的副队长史波克落入克林贡的诡计中,被关押在他们的母亲星球Qo’noS上。 企业的上尉詹姆斯·T·柯克(James T. Kirk)不得不乘宇宙飞船去救他的副手。幸运的是,他偷走了史波克所在的迷宫地图。 迷宫是一个矩形,它有n行垂直和m列水平,换句话说,它被分为n * m个位置。有序对(行号,列号)
2017-12-24 14:07:33
586
1
原创 HDU1181 题解(Floyd最短路)
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 26776 Accepted Submission(s): 9787Problem Description 呃……变形课上Harry碰到了一点小麻烦,因为他并不像Herm
2017-12-14 18:52:28
206
原创 NOIP比赛中如何加速c++的输入输出
OI与ACM比赛中如何加速c++的输入输出1. **遇到大数据时尽量避免用cin** 2. **noip比赛中坚决不要写std::ios::sync_with_stdio(false)** 3. **如果是double或输入格式较复杂用scanf** 4. **遇到数据量大的题,且是long long或int,尽量用手写的快速读入来读取**
2017-12-10 21:30:27
6843
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人