题解

84 条题解

  • 0
    @ 2008-08-28 22:36:46

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    2维背包

    认真读题。。

    int64

    0ms AC

  • 0
    @ 2008-08-28 22:11:37

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 25ms

    ├ 测试数据 09:答案正确... 41ms

    ├ 测试数据 10:答案正确... 25ms

    不是0ms ……

  • 0
    @ 2008-08-28 19:21:26

    编译通过...

    ├ **测试数据 **01:答案正确... 0ms

    ├ **测试数据 **02:答案正确... 0ms

    ├ **测试数据 **03:答案正确... 0ms

    ├ **测试数据 **04:答案正确... 0ms

    ├ **测试数据 **05:答案正确... 0ms

    ├ **测试数据 **06:答案正确... 0ms

    ├ **测试数据 **07:答案正确... 0ms

    ├ **测试数据 **08:答案正确... 9ms

    ├ **测试数据 **09:答案正确... 25ms

    ├ **测试数据 **10:答案正确... 72ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:106ms

    我好像跟各位的做法不一样,设f[x][y]是第i种饼干在达到小狗叫x次(包含x次)数以上,大狗叫y次(包含y次)以上时最小的花费。

    初始化f[0][0]=0,其余的为MAXinteger.

    第i个饼干能使大狗叫a次,小狗叫b次,花费为cost

    dp转移方程如下:f[x][y]=f[p][q]+cost;

    p,q的值从(max(0,x-a)

  • 0
    @ 2008-08-27 10:08:40

    for i:=1 to n do

    begin

    readln(v[1],v[2],w);

    for j:=60 downto v[1] do

    for k:=60 downto v[2] do

    f[j,k]:=min(f[j,k],f[j-v[1],k-v[2]]+w);

    end;1],k-v[2]]+w);

    这里的60是一个粗糙的上限,刚好可以过。

    状态转移完后再找最小就可以了,在状态转移时先不乘,到输出再乘比较好,避免过多运算。

  • 0
    @ 2008-08-27 09:38:21

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案错误...程序输出比正确答案长

    ├ 测试数据 09:答案错误...程序输出比正确答案长

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:80 有效耗时:0ms

    var n,s,b,i,j,k:integer;x,y,p,min:int64;

    f:array[0..50,0..50]of int64;

    begin

    for i:=0 to 50 do

    for j:=0 to 50 do

    f:=2147483647;

    f[0,0]:=0;min:=1000000000*2147483647;

    readln(n,s,b);

    for k:=1 to n do

    begin

    readln(x,y,p);

    if (x>50)and(y>50)and(2*p=b)and(f

  • 0
    @ 2008-08-26 23:31:41

    有一组过不了啊!帮忙看下

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案错误...程序输出比正确答案长

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:90 有效耗时:0ms

    program gilrman;

    var i,j,jj,kk,k,n,s,b:longint;

    ss,bb,c:array[1..1000]of longint;

    f:array[0..50,0..50]of int64;

    begin

    readln(n,s,b);

    for i:=1 to n do

    readln(ss[i],bb[i],c[i]);

    for i:=0 to 50 do

    for j:=0 to 50 do

    f:=-1;

    f[0,0]:=0;

    f[ss[1],bb[1]]:=2*c[1];

    for i:=2 to n do

    for j:=s downto 0 do

    for k:=b downto 0 do

    begin

    jj:=j-ss[i];kk:=k-bb[i];

    if jj=0)and(f[j,k]>f[jj,kk]+2*c[i]) then

    f[j,k]:=f[jj,kk]+2*c[i];

    end;

    end;

    writeln(f);

    end.

  • 0
    @ 2008-08-26 23:05:42

    千万要用int64!!!

    不然70分等着你!

    最大的结果超过了longint!

    别受题上的误导!他意思是每个数据小于maxlongint!好考语文!

    还有就是要用滚动数组!

  • 0
    @ 2008-08-26 22:18:29

    搞笑~~一样的程序交2次都没过,第3次竟然AC了~~~~

  • 0
    @ 2008-08-26 09:51:24

    用QWORD连测试数据都过不了……传上来居然还AC……

    妈妈咪呃……

  • 0
    @ 2008-08-25 21:37:09

    感谢全人类!!!

    感谢 VIJOS !!!

    本人本题第 100 位 通过!!!

    庆祝一下!!!!!!

    第一次啊~~~

  • 0
    @ 2008-08-25 20:59:37

    也许Vijos不是超级计算机,只不过CUDA+GTX280四卡SLI+PCI2.0+DDRIII2133+SDD

  • 0
    @ 2008-08-25 11:30:15

    数据范围有什么好考的

    还要用INT64

  • 0
    @ 2008-08-25 10:53:43

    还是我数据弱了...

    全是随机生成的,不然就不会让不正确的DP得90分了

  • 0
    @ 2008-08-24 19:02:07

    经典dp。

    用二维的表示(注意:逆序枚举)

    F[j][k] = min{ F[j][k] , F[j - s[i]][k - b[i]] + 2 * c[i] }

    初始:

    memset(f , -1 , sizeof(f));

    f[0][0] = 0;

    dp:

    int t1 = i - s , t2 = j - b; // i , j都是枚举的叫声数目

    if ( t1 < 0 ) t1 = 0; // 这样处理一下能省去不少麻烦

    if ( t2 < 0 ) t2 = 0;

    if ( f[t1][t2] >= 0 )

    {

    if ( f[i][j] == -1 )

    f[i][j] = f[t1][t2] + 2 * c;

    else

    f[i][j]

  • 0
    @ 2008-08-24 15:54:19

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    donwto1和downto0的差别......顺便OTZ一下wind牛......

  • 0
    @ 2008-08-24 11:26:55

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:90 有效耗时:0ms

    咋回事了?

    program goujiaob;

    const max=2147483647000;

    var n,s,b,i,j,k:longint; x,y,p,min:int64;

    f:array[0..100,0..100] of int64;

    begin

    readln(n,s,b);

    for i:=0 to 50 do

    for j:=0 to 50 do

    f:=max; min:=max;

    f[0,0]:=0;

    for k:=1 to n do

    begin

    readln(x,y,p);

    if (x>50)and(y>50)and(2*pf+2*p then

    begin

    f:=f+2*p;

    if (i+x>=s)and(j+y>=b)and(min>f) then min:=f;

    end;

    end;

    end;

    writeln(min);

    end.

    好像很多人得90哦~请说具体点为什么会只是90...

  • 0
    @ 2008-08-24 01:04:15

    从90变成60,只因打错了字母

    加一句for c:=j-s[i] to j-1 do

    for d:=k-b[i]to k-1 do

    if f

  • 0
    @ 2008-08-24 00:48:29

    终于过了……

    N次90

    后来发现

    for(i=s;i>=0;i--)

    for(j=b;j>=0;j--)

    其中的大于等于漏打了等号了

  • 0
    @ 2008-08-24 11:45:23

    记忆化搜索没法0ms。。。

    当次数

  • 0
    @ 2008-08-25 13:09:58

    突然发现自己没乘上那个2`\全WA...

信息

ID
1428
难度
6
分类
动态规划 | 背包 点击显示
标签
(无)
递交数
1547
已通过
411
通过率
27%
被复制
2
上传者