田忌賽馬
描述 description
中國古代的歷史故事「田忌賽馬」是為大家所熟知的。話說齊王和田忌又要賽馬了,他們各派出n匹馬,每場比賽,輸的一方將要給贏的一方200兩**,如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的馬去對抗齊王的馬,才能贏取最多的錢?
輸入格式 input format
第一行為乙個正整數n (n <= 1000) ,表示雙方馬的數量。
第二行有n個整數表示田忌的馬的速度。
第三行的n個整數為齊王的馬的速度。
輸出格式 output format
僅有一行,為田忌賽馬可能贏得的最多的錢,結果有可能為負。
樣例輸入 sample input [複製資料]
樣例輸出 sample output [複製資料]
時間限制 time limitation
各個測試點1s
type
arr=array[1..1000]of longint;
var n:longint;
a:array[1..1000]of longint;
b:array[1..1000]of longint;
f:array[0..1100,0..1100]of longint;
procedure init;
begin
assign(input,'p1048.in');
assign(output,'p1048.out');
reset(input); rewrite(output);
end;
procedure terminate;
begin
close(input); close(output);
halt;
end;
procedure qsort(var a:arr;s,t:longint);
var i,j:longint;
x,tem:longint;
begin
x:=a[(s+t)shr 1];
i:=s; j:=t;
repeat
while x>a[j] do dec(j);
while xj;
if ib then exit(a);
exit(b);
end;
procedure main;
var i,j:longint;
ans:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do read(b[i]);
qsort(a,1,n);
qsort(b,1,n);
for i:=0 to 1100 do
for j:=0 to 1100 do
f[i,j]:=-100000000;
f[1,1]:=0;
for i:=1 to n do
for j:=1 to n do
if f[i,j]<>-100000000 then
begin
if a[i]>b[j] then f[i+1,j+1]:=max(f[i+1,j+1],f[i,j]+200);
if a[i]=b[j] then
begin
f[i+1,j+1]:=max(f[i+1,j+1],f[i,j]);
f[i,j+1]:=max(f[i,j+1],f[i,j]-200);
end;
if a[i]
田忌賽馬(貪心)
描述 中國古代的歷史故事 田忌賽馬 是為大家所熟知的。話說齊王和田忌又要賽馬了,他們各派出n匹馬,每場比賽,輸的一方將要給贏的一方200兩 如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的馬去對抗齊王的馬,才能贏取最多的錢...
田忌賽馬(貪心
給出田忌和齊王各馬的速度,求最優得分 我的貪心策略 當然是錯的 1,用我方在 可以 戰勝 或 比平 對方最慢的馬 的馬 中 最慢的馬 去比 對方最慢的馬 2,直到我方最快的馬也下場了,剩下的馬預設全部戰敗 這種策略明顯是不對的 我方的快馬的貪心策略應該是擊敗能力範圍內對方最快的馬 浪費最小 我方的慢...
田忌賽馬貪心演算法 田忌賽馬問題 貪心演算法
關於輸入 輸入包含多組測試資料.每組測試資料的第一行是乙個整數n 1 n 1000 表示田忌和齊王都擁有n匹馬。接下來一行是n個整數,表示田忌的馬的速度,下一行也是n個整數,表示齊王的馬的速度。輸入的最後以乙個0表示結束。關於輸出 對每組資料,如果田忌能贏則輸出 win 如果田忌能輸則輸出 lose...