P2339 提交作业usaco
P2339 提交作業usaco
題目背景
usaco
題目描述
貝西在哞哞大學選修了 C 門課,她要把所有作業分別交給每門課的老師,然后去車站和同學們一起回家。每個老師在各自的辦公室里,辦公室要等他們下課后才開,第 i 門課的辦公室將在 Ti 分鐘后開放。
所有的辦公室都在一條筆直的走廊上,這條走廊長 H 個單位,一開始貝西在走廊的盡頭一側,位于坐標為 0 的地方。第 i 門課的辦公室坐標位于坐標為 Xi 的地方,車站的坐標為 B。貝西可在走廊上自由行走,每分鐘可以向右或者向左移動一個單位,也可以選擇停著不移動。如果走到一間已經開門的辦公室,貝西就可以把相應的作業交掉了,走進辦公室交作業是不計時間的。請幫助貝西計算一下,從她開始交作業開始,直到到交完所有作業,再走到車站,最短需要多少時間時間。
輸入輸出格式
輸入格式:輸入格式
? 第一行:三個整數 C, H 和 B, 1 ≤ C ≤ 1000 , 1 ≤ H ≤ 1000 , 0 ≤ B ≤ H
? 第二行到 C + 1 行:第 i + 1 行有兩個整數 Xi 和 Ti, 0 ≤ Xi ≤ H , 0 ≤ Ti ≤ 10000
輸出格式:輸出格式
? 單個整數,表示貝西交完作業后走到車站的最短時間
輸入輸出樣例
輸入樣例#1:? 4 10 3 8 9 4 21 3 16 8 12 輸出樣例#1:? 22說明
走到坐標 8 處,第 9 分鐘交一本作業,等到第 12 分鐘時,交另一本作業。再走到坐標 4 處交作業,最后走到坐標 3 處,交最后一本作業,此地就是車站所在位置,共用時 22 分鐘
——————————————————————————————————————————————————————————————————
好喵啊完全想不到我好菜啊
dp[i][j][1/0]表示除 [i,j] 以外的其它區間都已完成,0 表示在 i,且 i 已完成,1 表示在 j ,且 j 已完成。由大區間推小區間。
對于當前的一個狀態dp[i][j][0],可以從兩種狀態轉移而來,一種是從i-1走到i,另一種是從i走到j+1,dp[i][j][1]同理
code
#include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std;const int MAXN = 1010; int C, H, B; int dp[MAXN][MAXN][2];struct Node {int X, T;bool operator < (const Node &t) {return X < t.X;} }a[MAXN];inline int read() {int num = 0, f = 1; char ch = getchar();while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar(); }while (isdigit(ch)) { num = num * 10 + ch - '0'; ch = getchar(); }return num * f; }int main() {C = read(); H = read(); B = read();for (int i = 1; i <= C; ++ i) a[i].X = read(), a[i].T = read();sort(a + 1, a + C + 1);memset(dp, 127/3, sizeof(dp));dp[1][C][0] = max(a[1].X, a[1].T);dp[1][C][1] = max(a[C].X, a[C].T);for (int L = C - 2; L >= 0; -- L)for (int i = 1; i + L <= C; ++ i) {int j = i + L;dp[i][j][0] = min(max(dp[i-1][j][0] + a[i].X - a[i-1].X, a[i].T),max(dp[i][j+1][1] + a[j+1].X - a[i].X, a[i].T));dp[i][j][1] = min(max(dp[i-1][j][0] + a[j].X - a[i-1].X, a[j].T),max(dp[i][j+1][1] + a[j+1].X - a[j].X, a[j].T));}int ans = 0x7fffffff;for (int i = 1; i <= C; ++ i) ans = min(ans, dp[i][i][0] + abs(a[i].X - B));cout << ans << endl;return 0; }?然后。。。DZY強無敵!
?
轉載于:https://www.cnblogs.com/hkttg/p/9414049.html
總結
以上是生活随笔為你收集整理的P2339 提交作业usaco的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#:目录
- 下一篇: luoguP1419 寻找段落(二分答案