DAG最长路……
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int tail;
int head[1010];
int dp[1010];
struct Edge
{
int to,next;
}edge[10000...
分类:
其他好文 时间:
2014-11-06 17:44:36
阅读次数:
435
题目大意:幼儿园老师给小盆友们发糖果。有5种要求,问老师最少需要准备多少糖果。如不能满足,输出-1。
思路:裸地差分约束系统,但是正向加边会T,需要反向加边。
CODE:
#include
#include
#include
#include
#include
#define MAX 400010
using namespace std;
int points...
分类:
其他好文 时间:
2014-11-03 17:54:30
阅读次数:
203
10分算法:对于城市网络为一条单向链的数据, 20分算法:对于n 2 #include 3 #include 4 #include 5 using namespace std; 6 #define M 500001 7 #define N 100001 8 struct Node 9 {10 ...
分类:
移动开发 时间:
2014-11-02 16:14:26
阅读次数:
415
Problem Description
A school bought the first computer some time ago(so this computer's id is 1). During the recent years the school bought N-1 new computers. Each new computer was connected to one...
分类:
其他好文 时间:
2014-10-25 18:51:08
阅读次数:
133
最近在复习比较简单的知识,顺便当整理代码吧。 树的直径是一个经典问题,即求树上最远两点的距离。思路一: 任取一个点,求这个点的最远点的最远点,两遍bfs即可。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #inc...
分类:
其他好文 时间:
2014-10-24 01:37:42
阅读次数:
226
题目大意:给出一张地图,有数字的点代表上面有数字个矿物,*代表这个点可以传送到另一个点上,#代表不能走。从一个点只能到这个点的下方和右方。现在从(0,0)开始,问最多可以收集多少矿物。
思路:这个题肯定是建图,然后最长路,关键是有了传送,就有可能形成正权环,然后在SPFA的过程中就会死循环。一个环上的所有权值只能得到一次,所以就用一次Tarjan求出所有的环,把权值累计一下,变成一个点,...
分类:
其他好文 时间:
2014-10-22 14:45:13
阅读次数:
303
题目链接
题意:给出一张有向图,判断图上的任意两个点是否存在一条路可达(单向可达即可)。
思路:有向图找出强连通分量,然后缩点,因为题目要求任意两点存在可达的路,所以缩点之后的点,要形成一条单链,才能符合可达的要求,在这里用DP求最长路来判断是否能形成一条单链。
代码:
#include
#include
#include
#include
#include...
分类:
其他好文 时间:
2014-10-18 11:15:10
阅读次数:
170
HDU 3016 Man Down
题目链接
题意:是男人就下100层的游戏的简单版,每次只能从两端下落,求落地最大血量
思路:利用线段树可以处理出每个线段能来自哪几个线段,然后就是dag最长路了
代码:
#include
#include
#include
#include
using namespace std;
const int N = 100005...
分类:
其他好文 时间:
2014-10-17 13:52:20
阅读次数:
187
树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径; 原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点 证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话,则...
分类:
其他好文 时间:
2014-10-17 00:26:23
阅读次数:
235
题目大意:给定一个m*n的地图,一些点有障碍物,钢琴初始在一个点,每个时间段可以选择向给定的方向移动一段距离,求最长路径长
朴素DP的话,我们有T个时间段,每个时间段有m*n个点,n个时间,一定会超时
考虑到一个时间段所有的更新操作都是相同的,我们可以考虑单调队列优化
设队尾为(x,y),新插入的点为(x',y'),那么当Distance( (x,y) , (x',y') )
四遍单调队...
分类:
其他好文 时间:
2014-10-14 15:06:31
阅读次数:
227