UVA 1399 - Puzzle
题目链接
题意:给定一些字符串,求一个最长的不在包含这些子串的字符串,如果可以无限长输出No
思路:建ACM自动机,把不可走结点标记构造出来,然后在这个状态图上进行dp找出最长路径即可,至于无限长的情况,只要在dp前进行一次dfs判有没有环即可
代码:
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-08-19 22:30:15
阅读次数:
270
题目链接:Codeforces 459E Pashmak and Graph
题目大意:给定一张有向图,每条边有它的权值,要求选定一条路线,保证所经过的边权值严格递增,输出最长路径。
解题思路:将边按照权值排序,每次将相同权值的边同时加入,维护每个点作为终止点的最大长度即可。
#include
#include
#include
using namespace std;
c...
分类:
其他好文 时间:
2014-08-16 11:11:30
阅读次数:
242
52.二元树的深度(树)。题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。例如:输入二元树: 10/ \6 14/ / \4 12 16输出该树的深度 3。二元树的...
分类:
其他好文 时间:
2014-08-13 18:42:56
阅读次数:
228
题目: UVA - 624CD(递推+ 路径打印)
题目大意:给出一组数据,给定一个N,问这些数据能否拼凑出不大于N的最接近N的数据,可以的话输出最接近N的数据,并且打印出最长路径(要求要找输入的顺序)。
解题思路:dp【j】:代表凑出J这个数值最多需要几个数。d【j】 = Max (d【j - v【i】】 + 1。
打印路径,如果取得是最小...
分类:
其他好文 时间:
2014-08-08 12:57:16
阅读次数:
213
题目:uva10285 - Longest Run on a Snowboard(记忆化搜索)
题目大意:给出N * N的矩阵,要求找到一条路径,路径上的值是递减的,求这样的路径的最长长度。
解题思路:记忆话搜索。因为要求最长的路径那么就需要将所有的这样的路径找出,但是直接dfs会超时的。对于同一个位置,从这个点出发的最长路径长度是固定的。所以在找的时候就要将这个位置的最长路径...
分类:
其他好文 时间:
2014-08-03 23:29:06
阅读次数:
299
一直不知道差分约束是什么类型题目,最近在写最短路问题就顺带看了下,原来就是给出一些形如x-y,=k的标准形式注意点:1. 如果要求最大值想办法把每个不等式变为标准x-yx-y=k的标准形式,然后建立一条从y到x的k边,求出最长路径即可2.如果权值为正,用dj,spfa,bellman都可以,如果为负...
分类:
其他好文 时间:
2014-07-25 02:16:04
阅读次数:
195
滑雪
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 75626
Accepted: 28028
难得一见的中文题 题意就不多做解释 求最长路径
简单点的动规 唯一的麻烦就是没告诉你起点和终点 没关系 直接一个个暴搜反正数据不大。。。
转移方程 ...
分类:
其他好文 时间:
2014-07-24 23:31:33
阅读次数:
244
求最久时间即在无环有向图里求最远路径
dfs+剪枝优化
从0节点(自己增加的)出发,0到1~n个节点之间的距离为1,mt[i]表示从0点到第i个节点目前所得的最长路径
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn = 1005;
int m...
分类:
其他好文 时间:
2014-07-24 23:24:23
阅读次数:
185
题意:一个有向图中,求一个节点数最多的结点集,使得该结点任意两点u和v, 要么u可达v,要么v可达u,u和v互相可达也可以。思路:这一看就知道是最大团的定义了,可以说是最大团的模板题,可以先强连通缩点,缩点后就成了DAG(有向无环图),强连通里的点都可以满足要求,再求DAG的最长路径极为结果,每个强...
分类:
其他好文 时间:
2014-07-23 22:25:07
阅读次数:
321
给出来的数据量还是可以的。题意:有若干个牧场,至少有两个不连通,一个牧场的直径就是牧场中最远的两个牧区的距离。要求找出几个牧场中最短的直径,就是找一条路径连接几个牧区,使这个直径最终最小。
基本方法,把整个图根据输入划分成几个不连通的牧区,然后求出每个牧区的直径(即每个连通块中的最长路径),然后枚举两个不在同一牧区的点,设blocks[i]记录第i个节点所在连通块的直径,那么result = m...
分类:
其他好文 时间:
2014-07-18 11:04:46
阅读次数:
287