95 条题解
-
0hydralisk LV 10 @ 2009-10-27 13:06:37
-_-||有时候,一个小小的等号能耗掉你一上午....囧!
-
02009-10-13 12:19:00@
感谢1s的题解!
---|---|---|---|---|---|---|---|---|---|---|---|-
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 88ms
├ 测试数据 07:答案正确... 134ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:222msvar m,i,j,g,k,v,n,all:longint;a,b:array[0..202]of longint;
f:array[0..5000,0..40]of longint;
z1,z2,c1,c2,c3:longint;
t1,t2:array[0..40]of longint;
begin
readln(k,v,n);
for i:=1 to n do readln(a[i],b[i]);
fillchar(f,sizeof(f),0);
f[0,0]:=1;
for i:=1 to n do
begin
for j:=v downto a[i] do
begin
if f[j-a[i],0]0 then
begin
c1:=f[j,0];c2:=f[j-a[i],0];
c3:=c1+c2;
if c3>k then c3:=k;
t1:=f[j];t2:=f[j-a[i]];
for g:=1 to c3 do
begin
t2[g]:=t2[g]+b[i];
end;
z1:=1;z2:=1;
for g:=1 to c3 do
begin
if (t1[z1]>t2[z2])or (z2>c2) then
begin
f[j,g]:=t1[z1];
inc(z1);
end
else
begin
f[j,g]:=t2[z2];
inc(z2);
end;
end;
f[j,0]:=c3;
end;
end;
end;
all:=0;
for i:=1 to k do
begin
all:=all+f[v,i];
end;
writeln(all);
end. -
02009-10-03 16:29:01@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 56ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 416ms
├ 测试数据 07:答案正确... 619ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1091ms时间不好看
-
02009-10-01 23:16:37@
From 飞过海
多人背包 DD的冒险 系列编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 88ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 431ms
├ 测试数据 07:答案正确... 588ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1107ms快排过不了,一定要插排 或 冒泡排序!
for i:=sum[j] downto 2 do //insert sort
if answer[j,i]>answer[j,i-1] then
begin
temp:=answer[j,i];
answer[j,i]:=answer[j,i-1];
answer[j,i-1]:=temp;
end else break; -
02009-08-31 19:59:07@
一点优化都没有
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 119ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 197ms
├ 测试数据 07:答案正确... 212ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:528ms -
02009-08-30 22:09:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 150ms
├ 测试数据 07:答案正确... 197ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:347ms
orz -
02009-08-26 15:02:51@
裸过去了.....
不过 真的算好题 赞个 -
02009-08-24 14:41:12@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 150ms
├ 测试数据 07:答案正确... 228ms216 的朋友注意,数组有没有越界。
一维背包+K个状态 -
02009-08-23 20:29:55@
到底怎么做才可以让背包刚好用完啊??????????????????????????????
跪求大牛指教 -
02009-08-12 10:47:10@
背包九讲里有....
最好优化一下.... -
02009-08-10 15:15:23@
如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/36048049_d.html
-
02009-08-07 13:36:21@
tle O(n*v*k)
Why!!??!!??! -
02009-08-07 09:48:49@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 72ms
├ 测试数据 07:答案正确... 119ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:191ms
ORZ.......
队列真强大 -
02009-05-26 17:26:27@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 166ms
├ 测试数据 07:答案正确... 306ms
---|---|---|---|---|---|---|---|-
wo chao dui le -
02009-05-26 09:56:12@
求一个01背包的前k优解,注意背包要放满。
还有这题要降维,不然会内存溢出(Vijos连50MB的空间也不给用啊……) -
02009-05-14 15:32:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 72ms
├ 测试数据 07:答案正确... 119ms -
02009-03-28 19:47:28@
类似于 冒泡排序
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 25ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 291ms
├ 测试数据 07:答案正确... 384ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:700ms贴一段
void kpackage(int v,int i)
{
for(int j=1;f[v-a[i].v][j]!=-1&&jf[v][K];j++)
{
f[v][K]=f[v-a[i].v][j]+a[i].c;
for(int k=K-1;k>=1;k--) //冒泡
{
if(f[v][k] -
02009-03-21 21:43:44@
核心代码,事实证明:水题虽然简单,但请不要直接到网上下载代码,因为很多都是错的
procedure insert(num,j:longint);
var t,temp:longint;
begin
g[j]:=true;
inc(sum[j]);
opt[j,sum[j]]:=num;
for t:=sum[j] downto 2 do
if opt[j,t]>opt[j,t-1] then
begin
temp:=opt[j,t];
opt[j,t]:=opt[j,t-1];
opt[j,t-1]:=temp;
end
else
if opt[j,t]k then dec(sum[j]);
end; -
02009-03-18 17:32:58@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 134ms
├ 测试数据 07:答案正确... 212ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:346ms
少打一句BREAK!!! -
02009-03-11 20:38:40@
├ 测试数据 06:答案正确... 9ms
├ 测试数据 07:答案正确... 103ms用 write 会: 输出比正确答案长…… Why???