08 2015 档案
摘要:题目:求s到t的第k短路。思路:网上是清一色的A*算法,所以学习了一下。所谓Astar算法其实就是启发式的bfs。这里设置了一个估价函数h,结合当前位置的最短路和到终点的估计最短路长度来选择下一个要扩展的节点(dijkstra算法对于所有的点的h值可以视为是一样的,所以下一个扩展的节点只与当前的最短...
阅读全文
摘要:题意:有若干字符,现在要把它们连成一个字符串,每种字符后面只能接特定种类的字符,现在询问能连接出的长度小于等于m的字符串有多少种。思路:我们可以把这个转移关系看成一个图,如果字符a后面可以接b,那么从a向b连边。用邻接矩阵保存这个图。。。然后可以发现长度为m的字符串实际上是这个图中的一条长度为m(经...
阅读全文
摘要:题目大意:需要解雇若干人,解雇每个人有一个损失或收益,解雇一个人就必须结果他的所有下属,问最大收益。思路:裸最大权闭合图问题,对于权值为q的点,负权向汇点连-p的边,正权源点向其连p的边,上下级关系上级向下级连oo的边,然后求最大流最小割,最大收益即为总正点权减最小割,需要裁员的人即为残余图中从源点...
阅读全文
摘要:题目:每个人有1~9的编号,有两个门,一帮人能进门,当且仅当这些人的编号之和与门的编号同余。问把这些人安排到两个门有多少种方法。思路:比赛的时候有点脑抽,想了好久才发现是个简单dp。。。。只需要统计每个编号的人数,然后dp[i][j]表示前i个编号的人组成j同余的方案数,然后由于每种人选9的倍数个是...
阅读全文
摘要:题目:一棵树上每个节点有个字符值,询问每个节点的深度为h的子节点的字符是否能组成一个回文串。思路:首先是奇妙的dfs序和时间戳,通过记录每个节点的dfs进出时间,可以发现某个节点的子节点的进出时间均在该节点的进出时间范围内(这是很直观的dfs的性质),这样可以把树形结构转变为线性结构,方便进行各种处...
阅读全文
摘要:题目:给出一个字母矩阵,问从左上角走到右下角的走法有多少种走法能走出回文子串,只能向下或向右走。思路:正解是O(n^3)的dp,也跑了2.9s,可见这题时限是比较紧的。自然的一个想法是两头同时向中间走,这样可以保证走出的是回文串,问题在于如何dp。一共需要走O(n+m)步,而每一步从左上走过来的和右...
阅读全文
摘要:1032 最长回文子串#include #define pb push_back#define se second#define fs first#define sq(x) (x)*(x)#define eps 0.000000001using namespace std;typedef long ...
阅读全文
摘要:题目:求出一棵树上任意一点能到的最远距离,然后若干询问,问区间内最大最小距离只差小于q的区间最长有多长。思路:最远距离通过两次dfs树形dp求得,询问需要先用st表处理一下,然后线性扫。基本是参考kuangbin的。ps:可能是我写挫了。。用vector做邻接表是1996ms过了一次,然后就是无限t...
阅读全文
摘要:题目:给出1到N的N张纸牌,一共最多有T轮,每轮需要拿出一定总和的牌的组合,问最后最多能拿出多少牌。思路:首先应该想到的是预处理出拿出牌的组合,这样每次需要拿出某个数的时候直接从列表里搜索,因为N为22,所以直接dfs枚举。然后就是搜索了,直接写一个dfs搜答案是很容易想到的,但是跑一下会发现即使是...
阅读全文
摘要:1 HDU 4334(线性查找|暴力hash)题目:给出五个集合,每个集合元素个数为n,现问是否有五个元素分别属于这五个集合且其和为0.思路:给定两个排好序的序列,可以在线性时间内求出是否有两个数分别属于这两个集合且其和为一定值。方法是设置两个指针,线性扫描两个数组。本题可以把5个集合分为三组,枚举...
阅读全文
摘要:HDU 4315题目:山上有n个人,每个人给出距离山顶的距离,给出其中一个人为king,每次能挑选一个人向上移动,不能越过其他人,最后将king移动到山顶者获胜。问获胜者。思路:转化为NIM游戏。简记:NIM游戏:有n堆石子,每次可以选择一堆拿走任意数量的石子,不能拿石子的一方失败。NIM游戏的必败...
阅读全文

浙公网安备 33010602011771号