刺激的摩托飛艇
源程式名 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...