3890: [Usaco2015 Jan]Meeting Time( dp )
2015-07-27 20:41
288 查看
简单的拓扑图dp..
A(i, j), B(i, j) 表示从点 i 长度为 j 的两种路径是否存在. 用bitset就行了
时间复杂度O(m)
----------------------------------------------------------------
#include<bits/stdc++.h> #define clr(x, c) memset(x, c, sizeof(x))#define rep(i, n) for(int i = 0; i < n; ++i)#define foreach(i, x) for(__typeof(x.begin()) i = x.begin(); i != x.end(); i++) using namespace std; const int maxn = 109; struct edge { int to, a, b;}; vector<edge> G[maxn];queue<int> Q;bitset<10009> A[maxn], B[maxn];int n, inD[maxn] = {0}; int main() { freopen("test.in", "r", stdin); int m; cin >> n >> m; while(m--) { int u, v, a, b; scanf("%d%d%d%d", &u, &v, &a, &b); u--; v--; G[u].push_back( (edge) {v, a, b} ); inD[v]++; } rep(i, n) { if(!inD[i]) Q.push(i); A[i].reset(); B[i].reset(); } A[0][0] = 1; B[0][0] = 1; while(!Q.empty()) { int x = Q.front(); Q.pop(); foreach(it, G[x]) { A[it->to] |= A[x] << it->a; B[it->to] |= B[x] << it->b; if(!--inD[it->to]) Q.push(it->to); } } int ans = -1; rep(i, 10001) if(A[n - 1][i] && B[n - 1][i]) { ans = i; break; } if(!~ans) puts("IMPOSSIBLE"); else printf("%d\n", ans); return 0;}----------------------------------------------------------------
3890: [Usaco2015 Jan]Meeting Time
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 95 Solved: 65
[Submit][Status][Discuss]
Description
Bessie and her sister Elsie want to travel from the barn to their favorite field, such that they leave at exactly the same time from the barn, and also arrive at exactly the same time at their favorite field. The farm is a collection of N fields (1 <= N <= 100) numbered 1..N, where field 1 contains the barn and field N is the favorite field. The farm is built on the side of a hill, with field X being higher in elevation than field Y if X < Y. An assortment of M paths connect pairs of fields. However, since each path is rather steep, it can only be followed in a downhill direction. For example, a path connecting field 5 with field 8 could be followed in the 5 -> 8 direction but not the other way, since this would be uphill. Each pair of fields is connected by at most one path, so M <= N(N-1)/2. It might take Bessie and Elsie different amounts of time to follow a path; for example, Bessie might take 10 units of time, and Elsie 20. Moreover, Bessie and Elsie only consume time when traveling on paths between fields -- since they are in a hurry, they always travel through a field in essentially zero time, never waiting around anywhere. Please help determine the shortest amount of time Bessie and Elsie must take in order to reach their favorite field at exactly the same moment.给出一个n个点m条边的有向无环图,每条边两个边权。
n<=100,没有重边。
然后要求两条长度相同且尽量短的路径,
路径1采用第一种边权,路径2采用第二种边权。
没有则输出”IMPOSSIBLE”
Input
The first input line contains N and M, separated by a space. Each of the following M lines describes a path using four integers A B C D, where A and B (with A < B) are the fields connected by the path, C is the time required for Bessie to follow the path, and D is the time required for Elsie to follow the path. Both C and D are in the range 1..100.Output
A single integer, giving the minimum time required for Bessie and Elsie to travel to their favorite field and arrive at the same moment. If this is impossible, or if there is no way for Bessie or Elsie to reach the favorite field at all, output the word IMPOSSIBLE on a single line.Sample Input
3 31 3 1 2
1 2 1 2
2 3 1 2
Sample Output
2SOLUTION NOTES:
Bessie is twice as fast as Elsie on each path, but if Bessie takes the
path 1->2->3 and Elsie takes the path 1->3 they will arrive at the
same time.
HINT
Source
Silver相关文章推荐
- OFFSET约束(OFFSET IN 和OFFSET OUT)
- eclipse下的ssh框架整合过程及测试
- 判断数组的方法
- hdoj 4857 逃生(逆向拓扑排序+优先队列)
- zoj3886--Nico Number(素数筛+线段树)
- Location and Maps Programing Guide(一)
- linux 列出目录下的所有文件和目录
- [FZYZOJ 1354] 8-1 飞行员配对方案问题
- 九度oj 1438
- Quintus小游戏制作之Beta(一)
- LR11 + win 7 + IE8录制脚本不成功大全!!楼主濒临崩溃试了N种方法终于成功!!!
- JavaScript学习要点(十)
- Choose the best route(最短路)dijk
- linux awk 内置变量使用介绍
- Reactor构架模式
- cocos学习路线图
- 简单的背包问题
- 利用百度地图API,在浏览器中找到自己的位置
- 可用性checklist
- const 和 #define区别