坐井观天

In the name of dream

导航

2012年6月9日

摘要: 题目链接:http://poj.org/problem?id=2762题目大意: 给定一个有向图,问是否对于任意给定的两个点x,y,满足以下两个条件之一: x能到达y 或者 y能到达x;分析: 我觉得这题并不是如网上和discuss写的那样,什么拓扑排序,什么dp的; 首先缩点是必须的; 缩点得到一个DAG,直接判断它是否是一条链就可以了,因为如果是链,那么这个链必定是所谓的最长链,那么任意两个点一定是单向可达的。代码:poj2762 1 /*2762 Accepted 392K 344MS C++ 2299B 2012-06-09 23:15:11... 阅读全文

posted @ 2012-06-09 23:20 一毛_ 阅读(253) 评论(1) 推荐(0)

摘要: 题目链接:http://poj.org/problem?id=3160题目大意: 给定一个有向图,每个点有权值,要求选定一个起点,从该点出发一直走,走出一条路径,该路径上的所有点的权值可取可不取,要求最大的权值和,注意可以重复走点,但是权值只可以加一次。分析: 显然,如果权值<=0,一律赋为0, 由输入数据,我们用Tarjan算法缩点得到一个有向无环图,同时注意每个强连通分量(SCC)的权值是该分量所含点的权值和; 得到的有向无环图(DAG)可能是一个有多个入度为0的点的图,为了方便dp,进行拓扑排序,然后简单更新即可,具体见代码。 (我自己对这类题目的理解就是: 进行拓扑排序可以方.. 阅读全文

posted @ 2012-06-09 20:43 一毛_ 阅读(243) 评论(0) 推荐(0)

摘要: 题目链接:http://poj.org/problem?id=3592题目大意: 给定一个n*m的地图,有0-9表示某个格子上的value,‘*’表示该格子上有个时空门,可直接到指定的某个格子(可以自行选择是否使用时空门),‘#’表示该格子无法使用,某个格子的value只能被计算一次,问从起点(规定为左上角,我一直把northwest看成了右上角,伤不起)出发,每次只能往下走一格或往右走一格,最多能得到多大的value。分析: 首先根据给定的关系建图,又因为有时空门的存在,所以必须缩点, 对缩点后的图进行拓扑排序之后再dp,即可求得最长路。(PS: 这题我看了discuss,发现思路什么... 阅读全文

posted @ 2012-06-09 16:32 一毛_ 阅读(301) 评论(0) 推荐(0)

摘要: 题目链接:http://poj.org/problem?id=3281题目大意: John有n头牛,每头牛需要分配food和drink,food有F种,drink有D种,每种food和drink最多仅可以被分配一次,每头牛最多可以分配到一种food和一种drink,且每头牛有自己喜欢的food和drink,问最多有多少牛可以得到所期望的分配。分析: 建立一个超级源点ST,ST向F个food分别连一条容量为1的边,表示每种food最多可以使用一次; 建立一个超级汇点ED,D个drink向ED分别连一条容量为1的边,表示每种drink最多可以使用一次; 根据牛的喜好,把牛和food,dri... 阅读全文

posted @ 2012-06-09 13:16 一毛_ 阅读(240) 评论(0) 推荐(0)