上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页
摘要: Description 真·树,问距离不大于 \(k\) 的点对个数. Sol 点分治. 同上. Code 阅读全文
posted @ 2016-11-10 07:34 北北北北屿 阅读(213) 评论(0) 推荐(0) 编辑
摘要: Description 一棵树,统计距离不大于 \(k\) 的点对个数. Sol 点分治. 发现自己快把点分治忘干净了... 找重心使所有儿子的最大值尽量小,然后每次处理全部子树,再减去每个子树的贡献,这样就得到子树间的贡献了,然后再搞子树就可以,这就是一个子问题了. Code 阅读全文
posted @ 2016-11-10 07:33 北北北北屿 阅读(213) 评论(0) 推荐(0) 编辑
摘要: Description 一棵树,询问两点间距离. Sol 倍增. 方向没用. 没有然后了. Code 阅读全文
posted @ 2016-11-10 07:30 北北北北屿 阅读(204) 评论(0) 推荐(0) 编辑
摘要: Description 给你一个图,两个点至多有一条路径,求最长的一条路径. \(n \leqslant 4\times 10^4\) Sol DFS?DP? 这就是一棵树,方向什么的都没用... 然后记录一下到这个点的最大值和次大值更新答案即可. Code 阅读全文
posted @ 2016-11-10 07:28 北北北北屿 阅读(401) 评论(0) 推荐(0) 编辑
摘要: Description 给你每个点与相邻点的距离和方向,求两点间的曼哈顿距离. \(n \leqslant 4\times 10^4\) . Sol 加权并查集. 像向量合成一样合并就可以了,找 \(f[x]\) 的时候需要先记录现在的父节点,然后更新他新的父节点. Code 阅读全文
posted @ 2016-11-10 07:25 北北北北屿 阅读(251) 评论(0) 推荐(0) 编辑
摘要: Decsription 给你一个矩阵,求最大了 01相间 的矩阵. Sol DP+悬线法. 这是一个论文啊 《浅谈用极大化思想解决最大子矩形问题》--王知昆. 枚举每一根悬线,记录最左/右/上能到达的点,统计答案. Code 阅读全文
posted @ 2016-11-08 22:06 北北北北屿 阅读(173) 评论(0) 推荐(0) 编辑
摘要: Description 一个汉诺塔,给出了移动的优先顺序,问从A移到按照规则移到另一个柱子上的最少步数. 规则:小的在大的上面,每次不能移动上一次移动的,选择可行的优先级最高的. Sol DP. 倒着DP.但是他有优先级,所以他的方案是唯一的. 状态 \(f[a][i]\) 表示 将 \(a\) 柱 阅读全文
posted @ 2016-11-08 22:03 北北北北屿 阅读(281) 评论(0) 推荐(0) 编辑
摘要: Description 求一个不覆盖指定点的最大子矩阵,\(n,m \leqslant 3\times 10^5,S \leqslant 5\times 10^3\) . Sol 没有名字的算法都叫xjblg算法? 枚举每个点成为极大子矩阵边界的情况,然后维护上下边界. 还有一种情况就是左右边界是矩 阅读全文
posted @ 2016-11-08 15:47 北北北北屿 阅读(139) 评论(0) 推荐(0) 编辑
摘要: Description 一个无向图,到一个点之前需要先到其他点,求从第一个点到第 \(n\) 点最短时间. Sol 拓扑+Dijkstra. 跑Dijkstra的时候加上拓扑序... 用两个数组表示 到该点的最短路和到拓扑中最大的距离,入堆的时候需要对两个取 \(max\) . Code 阅读全文
posted @ 2016-11-07 17:17 北北北北屿 阅读(179) 评论(0) 推荐(0) 编辑
摘要: Description 在一条边上求一个点,使得这个点到所有点的最长的最短距离 最短. \(n \leqslant 10^5\) Sol Dijkstra+扫描线+单调队列. 这个好像叫什么最小直径生成树?不过变成了在一个边上... 对于一个点,我们可以求出当分割点在哪个位置的时候,它应该到 \(A 阅读全文
posted @ 2016-11-07 16:37 北北北北屿 阅读(171) 评论(0) 推荐(0) 编辑
摘要: Description 有 \(n\) 个技能,每次可以通过一个巫师,将一个技能转化成另一个技能,问最有最多有多少不同的技能. Sol 网络流. 先说说我一开始非常 naive 的建图,将技能拆点,中间加一列巫师, \(S\) 向初始技能连边容量为个数,对应点之间连边容量为 \(INF\),然后从拆 阅读全文
posted @ 2016-11-04 15:11 北北北北屿 阅读(189) 评论(0) 推荐(0) 编辑
摘要: Description 一棵树,可以进行染色,被染色的点可以控制与它距离不超过 \(k\) 的所有点,问控制整棵树最少需要染几个点. Sol 贪心. 记录一下最深的未染色点和最浅的染色点,判断一下能否在子树中就完成,不能的话就把权值赋成最深未染色点深度+1,能的话就赋成染色点深度+1. 需要特判一下 阅读全文
posted @ 2016-11-03 15:31 北北北北屿 阅读(243) 评论(0) 推荐(0) 编辑
摘要: Description 一开始有一个环,可以选择删除一个元素获得他的权值,同时删除与它相邻的两个元素,其他元素重新形成环,问能获得的最大价值. Sol 堆+贪心. 一开始从堆中加入所有元素,然后取出一个元素之后,加入他两边的元素之和-该位置的权值,并把左右两点删除. 一直到取出 \(\frac {n 阅读全文
posted @ 2016-11-03 15:28 北北北北屿 阅读(196) 评论(0) 推荐(0) 编辑
摘要: Description 一开始有 \(n\) 个元素,可以进行几个操作. 合并 \(x,y\) . 合并 \(x,x+1,...,y\) . 询问 \(x,y\) 是否在一个集合中. Sol 并查集+链表. 第二个询问,一直用链表找 \(pre\) 优化一下就可以了. 另外 51Nod 1525 重 阅读全文
posted @ 2016-11-03 15:02 北北北北屿 阅读(176) 评论(0) 推荐(0) 编辑
摘要: Description 求拼成阶梯状的方案数. Sol 高精度+Catalan数. 我们可以把最后一行无线延伸,所有就很容易看出Catalan数了. \(f_n=f_0f_{n-1}+f_1f_{n-2}+f_2f_{n-3}+...+f_{n-1}f_0\) 这就是Catalan数了,高精贴板子. 阅读全文
posted @ 2016-11-01 21:51 北北北北屿 阅读(135) 评论(0) 推荐(0) 编辑
摘要: Description 在 \([a,b]\) 之间选择 \(n\) 个数 (可以重复) ,使这 \(n\) 个数的最小公倍数能被 \(x\) 整除,对 \(10^9+7\) 取膜. \(1\leqslant n \leqslant 100,1\leqslant a,b,x \leqslant 10 阅读全文
posted @ 2016-10-31 21:25 北北北北屿 阅读(182) 评论(0) 推荐(0) 编辑
摘要: Description 统计 \(1...n\) 的排列,恰好进行 \(k\) 次相邻交换和至多进行 \(k\) 次交换生成的不同的序列个数. Sol DP. 好妙的题啊... 首先看第一个问题. 对于相邻元素的交换,我们建立状态 \(f[i][j]\) 表示前 \(i\) 个数进行 \(j\) 次 阅读全文
posted @ 2016-10-30 21:30 北北北北屿 阅读(195) 评论(0) 推荐(0) 编辑
摘要: Description 求一个最长周期. Sol KMP. 一个点的最短周期就是 \(i-next[i]\) 此外 \(i-next[next[i]],i-next[next[next[i]]]\) 等等都是它的周期,知道第一个为0的位置. 然后就没有然后了. Code 阅读全文
posted @ 2016-10-30 21:12 北北北北屿 阅读(163) 评论(0) 推荐(0) 编辑
摘要: Description 一个字符串最短周期. Sol KMP. 最短周期就是 \(n-next[n]\) 证明: 当该字符串不存在周期的时候 \(next[n]=0\) 成立. 当存在周期的时候 \(next[]\) 表示的就是一个和当前后缀相等的前缀,由中间交错的位置可以分别推倒出相邻长度为 \( 阅读全文
posted @ 2016-10-30 20:57 北北北北屿 阅读(146) 评论(0) 推荐(0) 编辑
摘要: Description 有两个字符串,每次用一个中取出下一位,放在一个字符串中,如果当前字符串的后缀是另一个字符串就删除. Sol KMP+栈. 用一个栈来维护新加的字符串就可以了.. 一开始我非常的naive,写了个链表,只能过5个点,因为起始位置不太好搞... Code 阅读全文
posted @ 2016-10-30 20:40 北北北北屿 阅读(136) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页