今天這麼有意義的日子不寫點兒什麼浪費了是吧、、
描述周老師為了讓資訊學奧賽班的學生能更好地投入到備戰資訊學競賽中去,決定自己養若干奶牛,每天早上擠一些牛奶給學生每天喝,補充營養。但餵養奶牛也是一件麻煩事,每天晚上奶牛都要進食。由於條件比較簡陋,並不一定所有奶牛都能吃到食物。奶牛的進食方式是這樣的:周老師有m個食桶(1<=m<=2000),分別編號為1..m。這些食桶被按照編號排成一行。周老師將奶牛們分成若干組,每組奶牛總是呆在一起進食的,每組奶牛會提出要求——他們需要吃第start到第end桶中的食物。可能存在若干組奶牛都要吃同乙個桶中的食物,從而就產生了衝突,這時周老師只能滿足其中一組的要求,另一些組就只能餓肚子了。
周老師當然不想讓奶牛都餓肚子,所以他希望根據奶牛們提出的請求,滿足其中一些組的要求,使得最多的食桶被奶牛食用。這個難題困擾著周老師,他希望得到你的幫助。
輸入第一行乙個整數n,表示奶牛的組數。(1<=n<=1000)
第2~n+1行,每行兩個整數start和end,描述了一組奶牛提出的請求。輸出乙個整數,表示最多有多少個食桶可以被食用。樣例輸入
3樣例輸出1 37 8
3 4
5提示(滿足第1組和第2組奶牛的要求,這樣1~3號和7~8號這5個食桶可以被食用)
略**的題目修改、、、
dp飄過、、、
首先按照結束排序、、(你願意按開始?隨你便吧、、)
然後、、、
xx:=first(h[xx]=i) to last(h[xx]=i);
f[i]:=max(f[h[xx]-1]+(start[xx]-end[xx]+1
));因為排過序了所以順著加就行了,不用每次再搜、、
上**:
1var2 f,h,t:array[0..2001] of
longint;
3i,j,n,m:longint;
4tt,xx:longint;
5iris:longint;
6procedure qsort(l,r:longint);
7var
8i,j,mid,tmp:longint;
9begin
10 i:=l;
11 j:=r;
12 mid:=t[(l+r) shr 1
];13
repeat
14 while t[i]do
inc(i);
15 while middo
dec(j);
16if i<=j then
17begin
18 tmp:=t[j];
19 t[j]:=t[i];
20 t[i]:=tmp;
21 tmp:=h[j];
22 h[j]:=h[i];
23 h[i]:=tmp;
24inc(i);
25dec(j);
26end;
27 until i>j;
28if i29if l30end;
31begin
32read(n);
33 for i:=1
to n do
34begin
35read(h[i],t[i]);
36if t[i]>m then m:=t[i];
37end;
38 qsort(1
,n);
39 xx:=1
;40 for i:=1
to m do
41begin
42 f[i]:=f[i-1
];43 if xx<=m then
44 while t[xx]=i do
45begin
46 tt:=f[h[xx]-1]+(t[xx]-h[xx]+1
);47
if tt>f[i] then f[i]:=tt;
48inc(xx);
49end;
50if f[i]>iris then iris:=f[i];
51end;
52writeln(iris);
53 end.
飢餓的奶牛
題目描述 輸出資料範圍限制 題目解法 題目 一道dp題搞了好久,最後發現根本不難。john養了若干奶牛,每天晚上奶牛都要進食。由於條件比較簡陋,並不一定所有奶牛都能吃到食物。奶牛的進食方式是這樣的 john有n個食桶 1 n 2000 分別編號為1 n。這些食桶被按照編號排成一行。john將奶牛們分...
P1868 飢餓的奶牛
有一條奶牛衝出了圍欄,來到了一處聖地 對於奶牛來說 上面用牛語寫著一段文字。現用漢語翻譯為 有n個區間,每個區間x,y表示提供的x y共y x 1堆優質牧草。你可以選擇任意區間但不能有重複的部分。對於奶牛來說,自然是吃的越多越好,然而奶牛智商有限,現在請你幫助他。輸入格式 第一行,n,如題 接下來n...
NKOJ1066 飢餓的奶牛 DP
問題描述 john養了若干奶牛,每天晚上奶牛都要進食。由於條件比較簡陋,並不一定所有奶牛都能吃到食物。奶牛的進食方式是這樣的 john有m個食桶 1 m 2000 分別編號為1.m。這些食桶被按照編號排成一行。john將奶牛們分成若干組,每組奶牛總是呆在一起進食的,每組奶牛會提出要求 他們需要吃第s...