時間限制: 1 s
空間限制: 256000 kb
題目等級 : 大師 master
火車站內往往設有一些主幹線分叉出去的鐵路支路,供火車停靠,以便上下客或裝載貨物。鐵路支路有一定長度;火車也有一定的長度,且每列火車的長度相等。
假 設某東西向的鐵路上,有一小站。該站只有一條鐵路支路可供火車停靠,並且該鐵路支路最多能容納m 輛火車。為了火車行駛的通暢,該站只允許火車自東方進站,自西方出站,且先進站的火車必須先出站,否則,站內火車將發生堵塞。該火車站工作任務繁忙。每天 都有 n 輛自東方駛向西方的火車要求在預定時刻進站,並在站內作一定時間的停靠。
為了滿足每輛進站火車的要求,小站的排程工作 是井井有條地開展。在小站每天的工作開始前,小站工作人員須閱讀所有火車的進站申請,並決定究競接受哪些火車的申請。而對於不能滿足要求的火車,小站必須 提前通知它們,請它們改變行車路線,以免影響正常的鐵路運輸工作。由於火車進站、出站的用時可以忽略不計,小站允許幾輛火車同時進站或出站,且小站工作人 員可以任意安排這些火車進站的先後排列次序。小站的工作原則是盡量地滿足申請火車的要求。
請你編乙個程式,幫助工作人員考察某天所有火車的進站申請,計算最多能滿足多少火車的要求。
輸入描述 input description
共n+1 行。
第一行是兩個正整數n 和m。(n<=100,m<=3);
以下n 行每行是一輛火車的進站申請,第i+1 行的兩個整數分別表示第i 列火車的進站的時間和火車出站的時間。
輸出描述 output description
僅一行,是乙個正整數b,表示火車站最多能接納的火車數量。
樣例輸入 sample input
6 3
2 4
1 7
3 6
5 7
8 10
9 11
樣例輸出 sample output
5 資料範圍及提示 data size & hint
祝各位大牛早日ac
【題解】
分情況討論。
m = 1時,dp[i]表示i在站台上的最大進站數。dp[i] = max;
要求j在i之前進站且j在i進站前出站
m = 2時,dp[i][j]表示i和j正在站台上的最大進站數。dp[i][j] = max;
要求k在j前進站,j在i前進站,且k在i進站前出站
m = 3時,dp[i][j][k]表示i,j,k正在站台上的最大進站數。dp[i][j][k] = max;
要求k在j前進站,l在k前進站,j在i前進站,且l在i進站前出站
先按進站時間從小到大排序,為了無後效性,從小往大遞推。為了判斷進站時間相等的若干列車,
i,j,k,l均要從1..n。
50^4資料略大,因此當遇到第乙個後面的車進站時間大於前面的車時直接break來減少常數
(實際上常數本來就很小,隨便過)
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7codevs 3958火車進站#define min(a, b) ((a) < (b) ? (a) : (b))
8#define max(a, b) ((a) > (b) ? (a) : (b))
910 inline void read(int &x)
1117
18const
int maxn = 100 + 10;19
20int
dp1[maxn], dp2[maxn][maxn], dp3[maxn][maxn][maxn], n, m;
2122
struct
node
2326
node(){}
27}node[maxn];
2829
bool
cmp(node a, node b)
3033
34int
ans;
3536
intmain()
3753 ans =max(ans, dp1[i]);54}
5556}57
else
if(m == 2)58
72 ans =max(ans, dp2[i][j]); 73}
74}75else
7694 ans =max(ans, dp3[i][j][k]);95}
96}97}
98 printf("%d"
, ans);
99return0;
100 }
codevs3958 火車進站
有一種學會演算法的方法叫意會 有一種證明複雜度的方法叫目測 有一種推出狀態轉移方程的方法叫腦補 沃茲基朔德 首先我們瞧瞧資料範圍 m 3,那麼肯定是要我們列舉每一種m的情況了。首先我們把火車按照出站時間排個序。然後我們隨意腦補一下 當m 1時 令f i 表示站內停靠i號火車時最多進入火車。很容易腦補...
火車進站問題
給定乙個正整數n代表火車數量,0 比如火車進站 序列問題 c include include include include using std stack using std vector using namespace std bool ispoporder const int put orde...
火車進站問題
描述 給定乙個正整數n代表火車數量,0 知識點棧 執行時間限制 0m記憶體限制0輸入 有多組測試用例,每一組第一行輸入乙個正整數n 0 輸出輸出以字典序排序的火車出站序列號,每個編號以空格隔開,每個輸出序列換行,具體見sample。樣例輸入 31 2 3 樣例輸出 1 2 3 1 3 2 2 1 3...