刺激的摩托飛艇 區間型動態規劃

2021-07-03 04:05:29 字數 1727 閱讀 8318

刺激的摩托飛艇

源程式名    boat.pas

可執行檔名   boat.exe

輸入檔名   boat.in 

輸出檔名     boat.out

【問題描述】

fdfz公園中有乙個近乎圓形的湖,有100

個主要景點分布的湖邊。為了方便遊客,公園在一些景點之間開設了直通的摩托飛艇擺渡的專案。一來減少遊客在景點到景點之間所花的時間,二來也可讓遊客體驗一下驚險刺激的摩托飛艇。

果然摩托飛艇擺渡專案大為成功,為了充分滿足遊客需要,擺渡線路越來越多。不料,隨著線路的增加,危險性也隨之增加。如果兩個擺渡線路之間有交叉(如下圖的2-7

,4-12

等),在這兩條線路上的飛艇一旦發生碰撞,後果將不堪設想。前不久,就發生過類似的險情。

公園的管理層近日做出決定,本著安全第一的原則,在這個湖上取消一些線路,使剩下的任意兩條線路在行駛階段(即不考慮碼頭)不交叉。同時,考慮到經濟效益,他們要求被取消的線路最小,即保留盡量多的線路。他們希望你能夠幫助他們決定應該保留哪些線路。

【輸入檔案】

輸入檔案boat.in的第一行為n,表示現有的線路數。接下來的n行,每行有兩個1

至100

的數a、b,表示a至b之間有飛艇往返。顯然a不會等於b,且若a至b有線路,則b至a也必有線路,它們不會同時出現在輸入檔案中。

【輸出檔案】

輸出檔案boat.out

有一行輸出,即保留下來的線路數的最大值。

【樣例輸入】

91  31

1   45

27  5

11  65

43 72

【樣例輸出】

區間型動規,石子合併的改版。用c++練練手。

#define local

#include#includeconst int size=100;

int f[233][233];

using namespace std;

int main()

{ #ifdef local

freopen("boat.in","r",stdin);

freopen("boat.out","w",stdout);

#endif

ios::sync_with_stdio(false);

int n,ans=0;

cin>>n;

memset(f,0,sizeof(f));

for (int i=0;i>l>>r;

if (ry then exit(x) else exit(y);

end;

procedure swap(var x,y:longint);

var t:longint;

begin

t:=x;x:=y;y:=t;

end;

begin

assign(input,'boat.in');reset(input);

assign(output,'boat.out');rewrite(output);

readln(n);

fillchar(f,sizeof(f),0);

for i:=1 to n do

begin

readln(l,r);

if r

區間型動態規劃

給定乙個序列 字串,進行一些操作 最後一步將序列 字串去頭 去尾 剩下的會是乙個區間 i,j 狀態自然定義為f i j 表示面對子串行 i j 時的最優性質 667.最長的回文序列 中文english 給一字串 s,找出在 s 中的最長回文子串行的長度.你可以假設 s 的最大長度為 1000.exa...

動態規劃 區間型

概述 最長的回文序列 取數是否必勝 給定乙個序列 字串,進行一些操作,最後一步會將序列 字串去頭 去尾 剩下的會是乙個區間 i,j 狀態自然定義為f i j 表示面對子串行 i,j 時的最優性質 1.題目描述 1.給定乙個字串s,長度是n,找到它最長的回文子串行的長度 例子 輸入 bbbab 輸出 ...

區間型動態規劃總結

區間型動態規劃,都是dp i j 由小的區間先計算,然後計算大的區間得到,模板就是 for int len 2 len n len int n s.length int dp new int n n int maxlen 0 for int i 0 i n i char ss s.tochararr...