题解

115 条题解

  • 0
    @ 2009-07-11 12:14:02

    f[i]为i个坑总数。

    f[i]总共可能的数目为:

    f[i]=2*f 即新加一个坑可放或不放(2)*原先i-1坑的个数。

    这其中会爆炸的数目为:

    总共i个坑(已加上新加的一个坑),【从后往前】m个坑必须放(会爆炸),【从后往前】第m+1个坑必须不放(放了i-1个坑就爆炸了),剩下的i-m-1个坑不爆炸的情况:如此绕口的情况其实就是f(最后m+i个坑已经确定了只有一种情况,只考虑前i-m-1个不爆炸的情况)。

    故放i个坑不爆炸的情况为2*f-f;

    (转移方程f[i]=2*f-f)

    边界条件:

    f[0]=1;

    f=1(i=m时)即i个坑放i个爆炸时爆炸的情况为1。因为i-m-1=-1

  • 0
    @ 2009-06-29 13:44:21

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    A是A了,但是动态转移方程还是没懂。。。

    我要努力学习,成为真正的大

    (__) 

      /oo\___|\__|_

      \ /     ---\

      \/    /  \  \

       \|__|\_|/  *

        ||  YY|

        ||  ||  

  • 0
    @ 2009-06-25 17:41:21

    var f:array[0..100,0..100] of QWORD;

    i,j,n,m:integer;

    begin

    readln(n,m);

    f[1,0]:=1;

    f[1,1]:=1;

    for i:= 2 to n+1 do

    begin

    for j:= 0 to m-1 do

    f:=f+f;

    for j:= 1 to m-1 do

    f:=f;

    end;

    writeln(f[n+1,0]);

    end.

  • 0
    @ 2009-03-18 17:50:27

    为什么那么多?

    var f:array [-5..50] Of extended;

    n,m,i:integer;

    begin

    readln(n,m);

    f[-1]:=1;f[0]:=1;

    for i:=1 to n do f[i]:=2*f-f;

    writeln(f[n]:0:0);

    end.

  • 0
    @ 2009-03-07 13:37:19

    当i

  • 0
    @ 2009-02-22 10:26:41

    初始化写囧了……

    {————————————————————————————}

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var

    n,m,i,j:integer;

    f:array[0..51]of int64;

    begin

    fillchar(f,sizeof(f),0);

    read(n,m);

    if m=1 then begin write(1); halt; end;

    if m>n then begin write(1 shl n); halt; end;

    case m of

    2:begin

    f[2]:=3;

    f[3]:=5;

    end;

    3:begin

    f[3]:=7;

    f[4]:=13;

    f[5]:=24;

    end;

    4:begin

    f[4]:=15;

    f[5]:=29;

    f[6]:=56;

    f[7]:=108;

    end;

    5:begin

    f[5]:=31;

    f[6]:=61;

    f[7]:=120;

    f[8]:=236;

    f[9]:=464;

    end;

    end;

    for i:=2*m to n do

    for j:=1 to m do

    f[i]:=f+f[i];

    writeln(f[n]);

    end.

    Flag    Accepted

    题号   P1232

    类型(?)   其它

    通过   1018人

    提交   1902次

    通过率   54%

    难度   2

    提交 讨论 题解

  • 0
    @ 2009-02-11 23:12:30

    #include

    using namespace std;

    main()

    {

    int n,m;

    cin>>n>>m;

    long long f[52];

    memset(f,0,sizeof(f));

    f[0]=1;

    for (int i=1;i=i-m;j--)

    if (j

  • 0
    @ 2009-02-11 09:11:19

    #include

    using namespace std;

    int main()

    {

    long long n,m;

    cin>>n>>m;

    long long k,i,j;

    long long f[100000];

    f[0]=1;

    for(i=1;i

  • 0
    @ 2009-02-02 22:33:22

    我和你一样

    我一开始写成裸搜了

  • 0
    @ 2009-01-30 17:09:27

    终于明白为什么是i-m-1而非i-m,想了一下午- -

  • 0
    @ 2009-01-16 20:07:09

    var

    n,m,k,i,j:longint;

    f:array[0..1000000]of qword;

    begin

    read(n,m);

    f[0]:=1;

    for i:=1 to n do

    begin

    if im then f[i]:=2*f-f;

    end;

    write(f[n]);

    end.

  • 0
    @ 2009-05-15 14:34:45

    f代表到n个的时候,有j个核弹的情况数

    分两种情况:加一个核弹,或不加

    所以:

    f:=f+{f}(0

  • 0
    @ 2008-11-10 17:04:59

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    水水水 。。

  • 0
    @ 2008-11-10 16:52:59

    program p1232;

    var n,m,i,j,k:longint;

    data:array[1..50,0..5] of qword;

    sum:qword;

    begin

    readln(n,m);

    fillchar(data,sizeof(data),0);

    data[1,0]:=1;

    data[1,1]:=1;

    for i:=2 to n do

    for j:=0 to m-1 do

    begin

    if j=0

    then begin

    for k:=0 to m-1 do

    data:=data+data;

    continue;

    end;

    data:=data;

    end;

    sum:=0;

    for i:=0 to m-1 do

    sum:=sum+data[n,i];

    writeln(sum);

    end.

    ssxiaobb

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-11-10 16:40:08

    int64....愤懑

  • 0
    @ 2008-10-31 08:12:34

    又一道DP啊……居然还要用INT64……我晕,调试了好久,没想到问题在这里……&

  • 0
    @ 2008-10-27 18:01:15

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    数组的类型一定要是int64,我用的longint和integer都错了

    if i

  • 0
    @ 2008-10-22 12:17:43

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    我的方法很奇特

    F表示枚举到第i个坑,并且包括这个坑之前共有k个连续的有物品的坑的方案数

    答案是Sigmaf(f[n,k]) 0

  • 0
    @ 2008-10-19 09:53:23

    不懂得可以去看MAIGO大牛的TJU题解

  • 0
    @ 2008-10-15 20:46:42

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    强烈要求将此题类型改为 动规,,,O(2*n*m)就可以了

信息

ID
1232
难度
3
分类
动态规划 点击显示
标签
(无)
递交数
2772
已通过
1346
通过率
49%
被复制
5
上传者