测评机: Xeost[5]
得分: 0分
提交日期: 2008-11-18 21:33:00
有效耗时: 该状态没有记录
测试结果1: 测试结果错误.错误结果为:69931
正确结果应为:69638
测试结果2: 测试结果错误.错误结果为:99549
正确结果应为:99197
测试结果3: 测试结果错误.错误结果为:113898346
正确结果应为:113896295
测试结果4: 测试结果错误.错误结果为:132272828
正确结果应为:132270720
测试结果5: 测试结果错误.错误结果为:182920004
正确结果应为:182918598
测试结果6: 测试结果错误.错误结果为:104021297
正确结果应为:104020418
测试结果7: 测试结果错误.错误结果为:41313356
正确结果应为:41312477
测试结果8: 测试结果错误.错误结果为:135782780
正确结果应为:135781725
测试结果9: 测试结果错误.错误结果为:109268728
正确结果应为:109266854
测试结果10: 测试结果错误.错误结果为:83583487
正确结果应为:83581612
program p43;
var
sz1,sz2,sz3:array [1..10000] of longint;
n,m,i,j,k,min:longint;
s:real;
begin
readln(n,m);
readln(k);
for i:=1 to k do
readln(sz1[i],sz2[i]);
for i:=1 to 1000 do
sz3[i]:=1;
for i:=2 to k do
begin
for j:=i-1 downto 1 do
if ((sz1[i]>=sz1[j]) and (sz2[i]>=sz2[j])) and (sz3[i]<=sz3[j])
then sz3[i]:=sz3[j]+1;
end;
min:=-2147483647;
for i:=1 to k do
if sz3[i]>min
then min:=sz3[i];
s:=100*n+100*m;
s:=s-min*(200-sqrt(20000));
writeln(round(s));
readln;
end.
爲什麽答案是錯的啊
都差了一點點
我就是求最長不下降
然後每走一個斜的就比走直的少走200-sqrt(20000)
減一下
不知道爲什麽錯了
請各位牛們指點一下
program fly;
type
shortroad=record
x,y:longint;
end;
var
road:array [1..1000] of shortroad;
n,m,i,j,max,k:longint;
t:shortroad;
f:array [1..1000] of longint;
ans:real;
begin
readln(m,n);
readln(k);
for i:=1 to k do
read(road[i].x,road[i].y);
for i:=1 to k do
for j:=i to k do
if road[i].x>road[j].x
then begin
t:=road[i]; road[i]:=road[j]; road[j]:=t;
end;
for i:=1 to k do f[i]:=1;
for i:=1 to k do
for j:=1 to i-1 do
if (road[i].x>road[j].x) and (road[i].y>road[j].y) and (f[j]+1>f[i])
then f[i]:=f[j]+1;
max:=0;
for i:=1 to k do
if f[i]>max then max:=f[i];
ans:=(n+m-2*max)*100+max*sqrt(20000);
writeln(ans:0:0);
end.