火車安排問題(dp好題)

來源:互聯網
上載者:User

標籤:問題   工作   時間   程式   dp   第一個   影響   排序   

火車站內往往設有一些主幹線分叉出去的鐵路支路,供火車停靠,以便上下客或裝載貨物。鐵路 支路有一定長度;火車也有一定的長度,且每列火車的長度相等。 假設某東西向的鐵路上,有一小站。該站只有一條鐵路支路可供火車停靠,並且該鐵路支路最多 能容納 M 輛火車。為了火車行駛的通暢,該站只允許火車自東方進站,自西方出站,且先進站的火車 必須先出站,否則,站內火車將發生堵塞。 該火車站工作任務繁忙。每天都有 N 輛自東方駛向西方的火車要求在預定時刻進站,並在站內作 一定時間的停靠。為了滿足每輛進站火車的要求,小站的調度工作是井井有條地開展。在小站每天的 工作開始前,小站工作人員須閱讀所有火車的進站申請,並決定究競接受哪些火車的申請。而對於不能 滿足要求的火車,小站必須提前通知它們,請它們改變行車路線,以免影響正常的鐵路運輸工作。由
於火車進站、出站的用時可以忽略不計,小站允許幾輛火車同時進站或出站,且小站工作人員可以任意安排這些火車進站的先後排列次序。小站的工作原則是盡量地滿足申請火車的要求。 請你編一個程式,協助工作人員考察某天所有火車的進站申請,計算最多能滿足多少火車的要求。 N<=100,M<=3;

 

這題一開始想到貪心,按出站時間排序,能進的就進,但是事實證明這個只適用於m=1的情況,因為m大於1的時候 很難判斷能否進站。

正解是分3次dp。講一下m=1和2的情況,m=3類推即可。

先按進站時間為第一關鍵字,出站時間為第二關鍵字排序。

m=1時,F[i]表示第i輛車最後出站的情況下能滿足多少火車的申請。初始F[i]=1;F[i]=max{F[j]+1}(j<i且i進站前j已經出站);

m=2時,F[i][j]表示第i輛車倒數第二個出站,第j輛車倒數第一個出站的情況下最多能滿足火車的申請。 初始F[i][j]=2;F[i][j]=max{F[k][i]+1}(出站順序k<i<j,並且j進站之前k已經出站);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.