- 博客(13)
- 资源 (12)
- 收藏
- 关注
原创 [hihoCoder 1032]最长回文子串[Manacher]
题目链接:[hihoCoder 1032]最长回文子串[Manacher]题意分析:求给定字符串中的最长回文串的长度是多少。解题思路:暴力:枚举每个区间,判断回文串,复杂度O(n3)枚举中心:分奇偶性讨论,从中心往两边扫,复杂度O(n2)Manacher:复杂度O(n)本题最坏情况下,1e6,所以只能使用Manacher了。推荐个博文:Manacher算法总结个
2015-11-29 17:18:59 452
原创 [CodeForces 540B]School Marks[贪心]
题目链接:[CodeForces 540B]School Marks[贪心]题意分析:给出序列中的几个数,求补全这个序列,使得权值和不大于x,中位数不小于y。解题思路:中位数左边可以放置的位置都放1,右边能放置的位置都放y。如果这样都无法满足权值和不大于x,肯定就不行了,另外别忘了判断中位数是否不小于y。个人感受:炸了!一道题卡了半天,还是个历史遗留题= =。要么过了那个c
2015-11-28 21:36:19 605
原创 [HDU 2312]Cliff Climbing[BFS]
题目链接:[HDU 2312]Cliff Climbing[BFS]题意分析:杰克可以从为'S'的点用任意一只脚向上爬,规定左脚爬完得用右脚,问:到达'T'的点需要的最少时间为多少?解题思路:从'S‘的点开始,向左右两边进行搜索。dis[i][j][2]代表,某只脚到达该点需要的最少时间,转移为dis[i][j][1 - sta] = min(dis[i][j][1 - sta],
2015-11-21 10:53:24 504
原创 [CodeForces 593D]Happy Tree Party[LCA][路径压缩]
题目链接:[CodeForces 593D]Happy Tree Party[LCA][路径压缩]题意分析:给出两个操作,1和2。1代表查询结点a到结点b之间最短路径,将路径上的权值对y进行向下求整,输出结果。2更改某个结点的权值解题思路:y最大1e18,对于除数为大于1的数字来说,最多除60次就可以让y变成0了。所以用lca不断除,当结果是0时就返回结果。不过还要考虑
2015-11-21 10:44:03 898
原创 [CodeForces 510C]Fox And Names[字典序][拓扑排序]
题目链接:[CodeForces 510C]Fox And Names[字典序][拓扑排序]题意分析:给出n个人的名字字典序排名,问:能否根据这个给出一个满足要求的字典序顺序,如果不能,输出"Impossible"解题思路:直接根据字典序的比较方法来做题:例如:上方字符串:ssssscbc下方字符串:sssssad相邻两个字符串,从左到右进行比较,直到两个不相同的字
2015-11-18 13:26:57 919
原创 [HDU 1811]Rank of Tetris[拓扑排序][并查集]
题目链接:[HDU 1811]Rank of Tetris[拓扑排序][并查集]题意分析:给出的关系中是否存在矛盾,是否无法确定关系?两者都有,输出"矛盾"即可。解题思路:排名大小关系,很容易想到拓扑排序。问题在于,什么情况下是不确定的?当处理队列中有多个点时,就是不能确定的情况,因为后继操作可以选择多个不同的开始。需要注意的是本题存在等于的情况,这时需要将相等的两者合并,合并之后
2015-11-17 16:33:12 432
原创 [CodeForces598C]Nearest vectors[精度]
题目链接:[CodeForces598C]Nearest vectors[精度]题意分析:给出多个有向向量,问这些向量中,哪两个构成的无定向角(即:构成的两个角中,小的那个角)最小。解题思路:用atan2函数把所有向量与x轴正半轴的夹角求出,排序,俩俩间比较差值即可。注意要使用long double。个人感受:精度问题太恶心了! X 3具体代码如下:#inclu
2015-11-15 14:00:31 1040
原创 [POJ 1330]Nearest Common Ancestors[LCA](O(dep[u] + dep[v]))
题目链接:[POJ 1330]Nearest Common Ancestors[LCA](O(dep[u] + dep[v]))题意分析:求两个结点的最近公共祖先。解题思路:先找出根结点,然后从根结点开始,运用深搜给每个子节点标记深度和父节点。那么查找公共祖先时,只需将较矮的那个节点往上提到两个节点变为相同高度,一起往上搜索即可。复杂度:dep[u] + dep[v]个
2015-11-12 00:55:48 504
原创 对打印最小点覆盖方案的疑问[未解决]
起因:[UVA 11419]SAM I AM 疑惑: 为什么对左边未匹配的点重新进行匹配之后,最小点覆盖涉及的点就是左边未标记的点加上右边已经标记的点。 代码如下: printf("%d", ans); memset(visx, 0, sizeof visx); memset(visy, 0, sizeof visy); for (
2015-11-03 21:19:25 367
原创 查找无序数组中的第K个最小值[快排思想]
分析: 快排每次会将作为哨兵的数移到给定位置上,我们可以依据这个特点,当它刚好在第K位时,返回这个值,否则进行递归。 个人感受: int *a = new int(10); int *a = new int[10]; 前者创建一个int型数,后者创建一个int型数组,被坑哭啦= =。 具体代码如下:#include<iostream>#include<cstdlib>#include<
2015-11-02 20:36:00 840
原创 [HDU 3435]A new Graph Game[拆点][KM]
题目链接:[HDU 3435]A new Graph Game[拆点][KM] 题意分析: 图中所有的哈密顿环中,边权之和最小的那个环和是多少? 解题思路: 考虑最终的环对于每个点来说,都有一条出边和入边,将点拆开成一个入点、一个出点,那么这个问题就成为了求二分图中最小完美匹配了(一个出点对应一个入点)。边权值取相反值,进行最大完美匹配即可。 个人感受: 原来我的板子是求最大完美匹配=
2015-11-02 12:30:58 478
原创 [HDU 2255]奔小康赚大钱[KM算法]
题目链接:[HDU 2255]奔小康赚大钱[KM算法] 题意分析: 最佳完美匹配。使连线两边权值只和最大。 解题思路: KM算法之~ 推荐一篇文章:点我 个人感受: KM-KM-KM。修改顶标实在太机智了。 具体代码如下:#include<cstdio>#include<cstring>#include<iostream>using namespace std;const i
2015-11-02 00:54:57 520
原创 [UVA 11235]Frequent values[线段树区间查询]
题目链接:[UVA 11235]Frequent values[线段树区间查询] 题意分析: 查询区间中出现次数最多的数出现的次数。给出的数列是从小到大排序的。 解题思路: 因为是排好序的,所以同样的数是连在一起的,线段树区间查询即可。lsum[]记录以这个区间左边开始最长的连续长度,rsum[]表示以这个区间右边开始最长的连续长度。sum[]代表区间中最长的连续长度。 个人感受: 久不
2015-11-01 23:01:35 590
数据结构与算法分析(C++版)(第三版)第五章个别习题答案
2015-10-16
数据结构与算法分析(C++版)(第三版)第四章个别习题
2015-09-25
数字识别系统预处理类
2015-09-22
数据结构与算法分析(C++版)(第三版)第三章个别习题答案
2015-09-22
The C Programming Language 2nd Edition(英文原版,包含答案)
2014-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人