上一页 1 2 3 4 5 6 7 ··· 20 下一页
摘要: 题目大意:给一个地区的地图,上面有若干路口,每个路口因为红灯的缘故要耽误一些时间,给出起点和终点,找出最短路径使得耽误时间最短。 单源最短路问题,Dijkstra算法。同时还要打印路径。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define INF 1e9 7 typedef pair ii; 8 typedef vector vii; 9 10 int p[20];11 12 void print_ans(int x)13 {14 if (p[x] != -1) pri... 阅读全文
posted @ 2013-09-18 22:03 xiaobaibuhei 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 题目大意:通过虫洞可以回到过去和未来,一名科学家想通过在虫洞中无限循环回到大爆炸时代,问是否可能。 实际上是求这个有向图上是否存在负环,可以用Bellman Ford算法进行判断:在进行n-1次的松弛操作后再进行一次松弛操作,如果有节点的距离变小了,说明这个图上存在负环。 1 #include 2 #include 3 using namespace std; 4 #define INF 1e9 5 typedef pair ii; 6 typedef vector vii; 7 8 int main() 9 {10 #ifdef LOCAL11 freopen("in", 阅读全文
posted @ 2013-09-18 20:04 xiaobaibuhei 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目大意:计算最小生成树有两种算法:一种是kruskal算法,另一种是与之相反的:如果图中存在环,去掉权重最大的边,直到不存在环。输出去掉的那些边。 可以用kruskal算法解决,在判断一条边时如果加入该边能形成环,保存该边即可。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 1100 6 typedef pair ii; 7 8 int p[MAXN]; 9 10 int find(int x)11 {12 return p[x] == x ? x : p[x]=find(p... 阅读全文
posted @ 2013-09-17 22:24 xiaobaibuhei 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 题目大意:政府为了减小开支决定关闭一些路灯,同时保证照亮的路能连接所有路口。 又是一个MST问题,Kruskal算法,不过数据规模比较大,又Submission Error了...扔这吧... 1 #include 2 #include 3 #include 4 using namespace std; 5 typedef pair ii; 6 #define MAXN 200100 7 8 int p[MAXN]; 9 10 int find(int x)11 {12 return p[x] == x ? x : p[x]=find(p[x]);13 }14 15 in... 阅读全文
posted @ 2013-09-17 21:54 xiaobaibuhei 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个网站,由m条线路相连,每条线路都有一定的花费,找出连接所有线路的最小花费。 最小生成树问题(Minimal Spanning Tree, MST),使用Kruskal算法解决。 1 #include 2 #include 3 #include 4 using namespace std; 5 typedef pair ii; 6 #define MAXN 1000100 7 8 int p[MAXN]; 9 10 int find(int x)11 {12 return p[x] == x ? x : p[x] = find(p[x]);13 }14 15... 阅读全文
posted @ 2013-09-17 20:08 xiaobaibuhei 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你一个二维迷宫,给定入口和出口,找出最短路径。 无权图上的单源最短路,用BFS解决。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 1100 6 7 int G[MAXN][MAXN], dist[MAXN*MAXN]; 8 const int dir[4][2] = {{-1, 0}, {0, -1}, {0, 1}, {1, 0}}; 9 10 int main()11 {12 #ifdef LOCAL13 freopen("in", "r", 阅读全文
posted @ 2013-09-17 18:30 xiaobaibuhei 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一座楼有100层,编号0-99,有n个电梯,每个电梯有不同的速度,并且只在指定的楼层停,在某一层如果有多个电梯停,在两个电梯间转移需要1分钟,求出从0层出发到达k层的所用的最短时间。 本来是正常的单源最短路问题,可是电梯转移花费的时间使得问题复杂了。刚开始是把一个节点扩展成两个节点,一个进一个出,在进出两个节点间加上60s的开销,纠结的好久才憋出来(犯了好多错误...浪费了好长时间),结果却WA了,用别人的测试用例结果也对,忽然就想到可能最终要到0层(写代码时考虑到了,可是认为不会这么干,也就没多写),处理完0之后,就好了...-_-|| 1 #include 2 #incl... 阅读全文
posted @ 2013-09-17 16:27 xiaobaibuhei 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题目大意:网络中有n个SMTP服务器,有m条电缆将它们相连,每条电缆传输信息需要一定的时间。现在给出信息的起点和终点,计算所需的最小时间。 有权图上的单源最短路问题(Single-Source Shortest Path, SSSP),直接使用Dijkstra算法。 1 #include 2 #include 3 #include 4 using namespace std; 5 typedef pair ii; 6 typedef vector vii; 7 #define INF 1e9 8 #define TRvii(c, it) \ 9 for (vii::iter... 阅读全文
posted @ 2013-09-16 17:00 xiaobaibuhei 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题目大意:二着色问题:给你一个图,给图中的所有点染色,只有两种颜色可选,使得每条边的两个顶点的颜色不同。二分判定问题,可用DFS或BFS解决。 1 #include 2 #include 3 #define MAXN 210 4 5 bool G[MAXN][MAXN]; 6 int n, color[MAXN]; 7 8 bool bipartite(int u) 9 {10 for (int i = 0; i < n; i++)11 if (G[u][i])12 {13 int v = i;14 ... 阅读全文
posted @ 2013-09-16 13:45 xiaobaibuhei 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题目大意:十进制与十六进制之间的相互转换。 1 #include 2 3 int main() 4 { 5 #ifdef LOCAL 6 freopen("in", "r", stdin); 7 #endif 8 char str[1000]; 9 while (gets(str))10 {11 int n;12 if (str[1] == 'x')13 {14 sscanf(str, "%x", &n);15 printf("%d\n", n);16 ... 阅读全文
posted @ 2013-09-15 15:00 xiaobaibuhei 阅读(255) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 20 下一页