POJ - 3846 Mountain Road 动归
生活随笔
收集整理的這篇文章主要介紹了
POJ - 3846 Mountain Road 动归
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?POJ - 3846 Mountain Road
?
題意:n個人要過橋,有的人從左邊來,有的人從右邊來,給你他們到達(dá)橋一端的時間和過橋所需要的時間,要求相向而行的只能有一人,對于每一個點,不能在10s內(nèi)有同向而行的人經(jīng)過。
思路:f[i][j][A/B] 表示 從左邊走了i個,從右邊走了j個,最后一個是左邊還是右邊的最小時間。問你最后一輛車的到達(dá)時間最小是多少。
對于每一個這樣的狀態(tài),可以往后面一直推過了k輛反向的車所消耗的時間,只要把出發(fā)時間和到達(dá)時間的間距都壓在10s以上就可以滿足條件,不斷的更新最優(yōu)值就行了。
我之前寫的時候?qū)τ诿恳粋€狀態(tài)只知道推相鄰的狀態(tài),這樣導(dǎo)致轉(zhuǎn)移的代碼特別冗雜,最終答案也沒有對,而且還超時了,所以這題來講還是很遺憾沒寫出來,想到了狀態(tài),只是轉(zhuǎn)移的時候犯了錯誤,沒能過掉。
?
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #define LL long long 6 #define INF 0x3f3f3f3f 7 #define IN freopen("in.txt","r",stdin) 8 #define OUT freopen("out.txt", "w", stdout) 9 #define MAXN 100005 10 using namespace std; 11 #define A 0 12 #define B 1 13 struct Node{ 14 int x, y, pos; 15 }; 16 int n; 17 int f[205][205][2]; 18 Node a[205], b[205]; 19 int a0, b0; 20 int main() 21 { 22 //IN; 23 //OUT; 24 int T; 25 scanf("%d", &T); 26 while(T--){ 27 scanf("%d\n", &n); 28 char ch; 29 int x, y; 30 a0 = 0; 31 b0 = 0; 32 //scanf("%c", &ch); 33 for(int i = 1; i <= n; i++){ 34 scanf("%c", &ch); 35 scanf("%d%d\n", &x, &y); 36 37 if(ch == 'A'){ 38 a0++; 39 a[a0].x = x; 40 a[a0].y = y; 41 a[a0].pos = i; 42 } 43 else{ 44 b0++; 45 b[b0].x = x; 46 b[b0].y = y; 47 b[b0].pos = i; 48 } 49 } 50 int i = 0, j = 0; 51 memset(f, INF, sizeof(f)); 52 f[0][0][A] = 0; 53 f[0][0][B] = 0; 54 int s, t; 55 for(int i = 0; i <= a0; i++){ 56 for(int j = 0; j <= b0; j++){ 57 t = f[i][j][A] - 10; 58 s = f[i][j][A] - 10; 59 for(int k = j + 1; k <= b0; k++){ 60 s = max(s + 10, b[k].x); 61 t = max(t + 10, s + b[k].y); 62 f[i][k][B] = min(f[i][k][B], t); 63 } 64 t = f[i][j][B] - 10; 65 s = f[i][j][B] - 10; 66 for(int k = i + 1; k <= a0; k++){ 67 s = max(s + 10, a[k].x); 68 t = max(t + 10, s + a[k].y); 69 f[k][j][A] = min(f[k][j][A], t); 70 } 71 } 72 } 73 printf("%d\n", min(f[a0][b0][A], f[a0][b0][B])); 74 } 75 return 0; 76 }?
轉(zhuǎn)載于:https://www.cnblogs.com/macinchang/p/4747946.html
總結(jié)
以上是生活随笔為你收集整理的POJ - 3846 Mountain Road 动归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL也有潜规则 – Select
- 下一篇: hdu2149 巴什博奕