303 条题解
-
0shenhong000 LV 7 @ 2009-07-18 14:28:29
const
maxm=30000; maxn=25;
type ar=array[1..maxn] of integer;
var m,n,j,i:integer;
c,w:ar;
f:array[0..maxn,0..maxm] of longint;
function max(x,y:integer):integer;
begin
if x>y then max:=x else max:=y;
end;
begin
readln(m,n);
for i:= 1 to n do
readln(w[i],c[i]);
for i:=1 to m do f[0,i]:=0;
for i:=1 to n do f:=0;
for i:=1 to n do
for j:=1 to m do
begin
if j>=w[i] then f:=max(f+c[i],f)
else f:=f;
end;
writeln(f[n,m]);
end. -
02009-07-17 19:26:00@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-07-17 08:49:36@
program dsa;
var t,m,i,j:longint;
p,v:array[1..100] of longint;
a:array[0..1000] of longint;
begin
fillchar(a,sizeof(a),0);
read(t,m);
for i:=1 to m do read(p[i],v[i]);
for i:=1 to m do
for j:=t downto p[i] do if a[j] -
02009-07-14 11:51:23@
include
long f[3003];
int main ()
{
int i,t,j,m,x,y;
scanf("%d %d",&t,&m);
for(i=1;i=x;j--)
if(t>=x)
if(f[j]>f[j-x])
f[j]=f[j-x]+y;
else
f[j]=f[j];
}
printf("%d",f[t]);getchar();getchar(); return 0;
} -
02009-07-13 00:27:32@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
NOI专刊上有。 -
02009-07-05 20:48:55@
program p2773;
var
a:array [1..1000] of integer;
i,j,t,m,ti,pi:integer;
function max(x,y:integer):integer;
begin
if x>=y then max:=x else max:=y;
end;
begin
fillchar(a,sizeof(a),0);
readln(t,m);
for i:=1 to m do
begin
readln(ti,pi);
if ti -
02009-07-04 18:20:28@
这题目难度二...
以前的评判标准太差了
-
02009-07-04 09:52:43@
program p1104;
const maxn=1001;
var
f:array[0..maxn]of longint;
i,j,a,b,m,n:longint;
begin
readln(n,m);
for m:=1 to m do
begin
readln(a,b);
for j:=n downto a do
if f[j-a]+b>f[j]
then f[j]:=f[j-a]+b;
end;
writeln(f[n]);
end. -
02009-07-03 12:53:10@
AC biao cheng;
jin gong can kao;
thank you!编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msprogram P1104;
var
t,m,i,j :longint;
a :array[1..100 ,1..2]of longint;
ans :array[0..1000]of longint;
begin
readln(t,m);
for i:=1 to m do readln(a,a);
for i:=1 to m do
for j:=t downto a do
if ans[j] -
02009-06-24 18:23:08@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
额——
01背包,基本上不用改 -
02009-06-21 10:05:38@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-06-18 17:02:33@
A星算法,计算600次=AC
-
02009-06-07 21:41:44@
数组设定要足够,01背包问题
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:0.0000001有效耗时: -
02009-05-31 17:54:51@
什么叫内存溢出?
-
02009-05-29 12:39:25@
标准的01背包问题
-
02009-05-19 17:28:40@
const maxn=1001;
var f:array[0..maxn]of longint;
i,j,a,b,m,n:longint;
begin
readln(n,m);
for m:=1 to m do begin
readln(a,b);
for j:=n downto a do
if f[j-a]+b>f[j]then f[j]:=f[j-a]+b;
end;
writeln(f[n]);
end. -
02009-05-12 23:13:39@
经典0/1背包问题, 完全可以写成一维的
f[j]=max(f[j-t[i]]+v[i], f[j]}
注意i: 1~n, 而j则应该从m ~ t[i]反向扫描即可.
不能正向扫描.如果本身资源可以重复,倒可以正向扫描,正好形成累加效果. -
02009-05-12 08:17:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-05-09 21:48:44@
var
i,j,m,t:integer;
bao:array [0..1000,0..1000] of integer;
tt,mm:array [0..1000] of integer;
begin
read(t,m);
readln;
for i:=1 to m do
begin
read(tt[i],mm[i]);
readln;
end;
fillchar(bao,sizeof(bao),0);
for i:=1 to m do
begin
for j:=1 to t do
begin
bao:=bao;
if (tt[i] -
02009-05-07 13:29:26@
var
{ }max,l:longint;
{ }a,b,n,t,t1,v1:integer;
{ }value:array[0..10000] of boolean;
{ }time:array[0..10000] of integer;
{ }begin
{ }readln(t,n);
{ }fillchar(value,sizeof(value),false);
{ }value[0]:=true;
{ }for a:=1 to 10000 do
{ } time[a]:=10000;
{ }for a:=1 to n do
{ } begin
{ }readln(t1,v1);
{ }max:=max+v1;
{ }for b:=max downto v1 do
{ } if value=true then
{ }begin
{ } if time>time+t1 then time:=time+t1;
{ } if time