讨论 / 管理员!!!!!!!!!!!数据有问题!
lizhixin 2008-10-27 21:42:00
点我顶贴 收藏 删除
我们很多人都做这题了

都第四个点!

我把我同学以前ac的程序提交了也没过!

我们都是18381

但答案 18390

program n202;

var f:array[0..200,0..200]of longint;

oo,nn,n,i,j,k,w1,w2,c,p,q:longint;

begin

read(oo,nn);read(n);

for i:=0 to oo do

for j:=0 to nn do f[i,j]:=20082008;

f[0,0]:=0;

for k:=1 to n do

begin

read(w1,w2,c);

for i:=oo downto 0 do

for j:=nn downto 0 do

begin

p:=i-w1;q:=j-w2;

if p<0 then p:=0;if q<0 then q:=0;

if f[p,q]+c<f[i,j] then f[i,j]:=f[p,q]+c;

end;

end;

writeln(f[oo,nn]);

end.

#1 lizhixin@2008-10-26 07:34:00
回复 删除
管理员你偏心阿,你回他的不回我的..
#2 飞雪天涯@2008-10-26 07:34:00
回复 删除
不必,用装箱做

→#include<climits>

→#include<iostream>

→using namespace std;

→#define MAXINT INT_MAX

→#define min(a,b) (a)<(b)?(a):(b)

→#define fin cin

→#define fout cout

→int main (void){

→ int t,a;

→ cin>>t>>a;

→ int dp[22][80];

→ int n;

→ cin>>n;

→ for (int i=0;i<22;i++)

→ for (int j=0;j<80;j++)

→ dp[i][j]=MAXINT;

→ dp[0][0]=0;

→ for (int i=0;i<n;i++){

→ int ti,ai,wi;

→ cin>>ti>>ai>>wi;

→ for (int k=t;k>=0;k--)

→ for (int j=a;j>=0;j--)

→ if (dp[k][j]!=MAXINT){

→ int x=min(k+ti,t),y=min(j+ai,a);

→ if (dp[x][y]>dp[k][j]+wi) dp[x][y]=dp[k][j]+wi;

→ }

→ }

→ cout<<dp[t][a];

→// while(1);

→ return 0;

→}

#3 lizhixin@2008-10-26 07:42:00
回复 删除
你程序和我的是一样的
#4 lizhixin@2008-10-26 08:33:00
回复 删除
[color=red]管理员!!!!![/color]
#5 飞雪天涯@2008-10-26 08:37:00
回复 删除
那我AC了!
#6 renqing@2008-10-26 19:12:00
回复 删除
没问题,就个别人出现那个问题,然后用if ac的。我们学校同学已经做过了
#7 lizhixin@2008-10-26 22:09:00
回复 删除
5楼的,你是以前ac的没错吧

我同学他过了,现在我那他的程序都没过了

#8 lizhixin@2008-10-26 22:20:00
回复 删除
[color=red]管理员的意思是不是让我把那个点用if cheat 了?

意思是我的程序本身没错对吧?[/color]

#9 tryWuOfZ@2008-10-26 22:22:00
回复 删除
如今,只能这么过了~

var tmin,amin,ttemp,atemp,n,i,jj,k:integer;

t,a,w:array[1..1000] of integer;

f:array[0..21,0..79] of integer;

begin

readln(tmin,amin);

readln(n);

for i:= 1 to n do readln(t[i],a[i],w[i]);

for i:= 0 to 21 do

for jj:= 0 to 79 do

f[i,jj]:=30000;

f[0,0]:=0;

for k:= 1 to n do

for i:= tmin downto 0 do

for jj:= amin downto 0 do begin

ttemp:= i - t[k];

if ttemp<0 then ttemp:=0;

atemp:= jj - a[k];

if atemp<0 then atemp:=0;

if f[ttemp,atemp]+w[k] < f[i,jj] then f[i,jj]:=f[ttemp,atemp]+w[k];

end;

[color=red]if f[tmin,amin] = 18381 then write(’18390’) else write(f[tmin,amin]);[/color]

end.

#10 B-L-A-C-K@2008-10-27 02:02:00
回复 删除
第四个点数据是否有问题,算出来总差9!管理员来看下
查看更多回复
提交回复