Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
谢谢,用这数据找到了程序问题,一次AC,也奉献社会,贴代码In Reply To:也奉献社会,这组数据过了肯定AC!! Posted by:xiaofengsheng at 2009-04-24 18:30:55 > 2 > > 3 8 7 2 > 6 14 6 > 4 10 4 > 5 14 2 > > 1 6 10 20 > 2 3 5 > > answer: > 17 10 #include <iostream> #include <algorithm> #include <string> using namespace std; struct Board { int left; int right; int height; int left_next_index; int right_next_index; }; bool sort_by_height_descending(Board b1, Board b2) { return b1.height > b2.height; } const int N = 1024; Board a[N]; int dp_left[N]; int dp_right[N]; int search(int i, int x, int y, int n, int m) { if (i <= n) { if (x >= a[i].left && x <= a[i].right && y - a[i].height <= m) { if (dp_left[i] == -1) { dp_left[i] = search(a[i].left_next_index, a[i].left, a[i].height, n, m); } int left = dp_left[i] + x - a[i].left; if (dp_right[i] == -1) { dp_right[i] = search(a[i].right_next_index, a[i].right, a[i].height, n, m); } int right = dp_right[i] + a[i].right - x; return min(left, right) + y - a[i].height; } else { return search(i + 1, x, y, n, m); } } else { if (y > m) { return 0x7f7f7f7f; } else { return y; } } } int main() { int t; cin>>t; while (t--) { int n, x, y, m; cin>>n>>x>>y>>m; for (int i=1; i<=n; i++) { cin>>a[i].left>>a[i].right>>a[i].height; } sort(a + 1, a + n + 1, sort_by_height_descending); for (int i=1; i<=n; i++) { a[i].left_next_index = n + 1; for (int j=i+1; j<=n; j++) { if (a[j].left <= a[i].left) { a[i].left_next_index = j; break; } } a[i].right_next_index = n + 1; for (int j=i+1; j<=n; j++) { if (a[j].right >= a[i].right) { a[i].right_next_index = j; break; } } } memset(dp_left, -1, sizeof(int) * N); memset(dp_right, -1, sizeof(int) * N); cout<<search(1, x, y, n, m)<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator