48 条题解

  • 1
    @ 2019-09-07 20:27:00
    //并不是一道难题(才怪)
    //题干很麻烦,但实际上就是每个人下一轮的果子数等于上一轮他周围所有人的果子数之和
    //这样就很简单了
    //由于数据范围比较小,我们可以直接设一个三维数组来表示状态
    //之后对12条边分别更新,由于不在正方体上的地方数值为0,因此对答案不构成影响
    #include<cstdio>
    using namespace std;
    long long map[32][32][32][32];
    int main()
    {
        int n,m,i,j,k,o;
        scanf("%d%d%d",&o,&n,&m);
        map[m][1][1][0]=1;
        for(i=0;i<o;i++)
        {
            for(j=1;j<=n;j++)
             {
                map[j][1][1][i+1]=map[j+1][1][1][i]+map[j-1][1][1][i]+map[j][2][1][i]+map[j][1][2][i];
                map[j][1][n][i+1]=map[j+1][1][n][i]+map[j-1][1][n][i]+map[j][2][n][i]+map[j][1][n-1][i];
                map[j][n][1][i+1]=map[j+1][n][1][i]+map[j-1][n][1][i]+map[j][n-1][1][i]+map[j][n][2][i];
                map[j][n][n][i+1]=map[j+1][n][n][i]+map[j-1][n][n][i]+map[j][n-1][n][i]+map[j][n][n-1][i];
                
                map[1][1][j][i+1]=map[1][1][j+1][i]+map[1][1][j-1][i]+map[2][1][j][i]+map[1][2][j][i];
                map[1][n][j][i+1]=map[1][n][j+1][i]+map[1][n][j-1][i]+map[2][n][j][i]+map[1][n-1][j][i];
                map[n][1][j][i+1]=map[n][1][j+1][i]+map[n][1][j-1][i]+map[n-1][1][j][i]+map[n][2][j][i];
                map[n][n][j][i+1]=map[n][n][j+1][i]+map[n][n][j-1][i]+map[n-1][n][j][i]+map[n][n-1][j][i];
                
                map[1][j][1][i+1]=map[1][j+1][1][i]+map[1][j-1][1][i]+map[2][j][1][i]+map[1][j][2][i];
                map[1][j][n][i+1]=map[1][j+1][n][i]+map[1][j-1][n][i]+map[2][j][n][i]+map[1][j][n-1][i];
                map[n][j][1][i+1]=map[n][j+1][1][i]+map[n][j-1][1][i]+map[n-1][j][1][i]+map[n][j][2][i];
                map[n][j][n][i+1]=map[n][j+1][n][i]+map[n][j-1][n][i]+map[n-1][j][n][i]+map[n][j][n-1][i];
             }
        }
        printf("%lld",map[m][1][1][o]) ;
        return 0;
    }
    
  • 0
    @ 2016-08-13 19:59:26

    我笨。。。87行AC。。。写了11个*if*
    对了!还要注意 int64

  • 0
    @ 2009-11-09 18:10:53

    比较烦,最好是用坐标

  • 0
    @ 2009-11-01 21:58:08

    这道题考的不是技巧,是耐性

  • 0
    @ 2009-10-30 19:45:53

    这题其实很简单,只是枚举而已。

    const

    maxn=31;

    var

    a,b:array[0..maxn+1,0..maxn+1,0..maxn+1]of int64;

    o,m,n:longint;

    procedure init;

    var

    i,j:longint;

    begin

    readln(o,n,m);

    a[1,m,1]:=1;

    end;

    function ok(i,j,k:longint):boolean;

    begin

    if ((i=1)or(i=n))and((j=1)or(j=n)or(k=1)or(k=n)) then exit(true);

    if ((j=1)or(j=n))and((i=1)or(i=n)or(k=1)or(k=n)) then exit(true);

    if ((k=1)or(k=n))and((i=1)or(i=n)or(j=1)or(j=n)) then exit(true);

    exit(false);

    end;

    procedure search(dep:longint);

    var

    i,j,k:longint;

    begin

    if dep>o then

    begin

    writeln(a[1,m,1]);

    exit;

    end;

    fillchar(b,sizeof(b),0);

    for i:=1 to n do

    for j:=1 to n do

    for k:=1 to n do

    if ok(i,j,k) then

    b:=a+a+a+a+a+a;

    a:=b;

    search(dep+1);

    end;

    procedure main;

    var

    i,j:longint;

    begin

    search(1);

    end;

    begin

    init;

    main;

    end.

  • 0
    @ 2009-10-26 08:25:53

    居然模拟都要写那么多 悲剧啊!莎士比亚啊~~~

  • 0
    @ 2009-10-13 14:58:04

    program lifangguo;

    var a:array[0..31]of array[0..31]of array[0..31]of array[0..31]of int64;

    o,n,m,i,p:longint;

    begin

    read(o,n,m);

    a[1][1][m][0]:=1;

    for p:=1 to o do

    begin

    for i:=2 to n-1 do

    begin

    a[1][1][i][p]:=a[1][1][p-1]+a[1][1][p-1];

    a[1][n][i][p]:=a[1][n][p-1]+a[1][n][p-1];

    a[n][1][i][p]:=a[n][1][p-1]+a[n][1][p-1];

    a[n][n][i][p]:=a[n][n][p-1]+a[n][n][p-1];

    a[1][i][1][p]:=a[1][1][p-1]+a[1][1][p-1];

    a[1][i][n][p]:=a[1][n][p-1]+a[1][n][p-1];

    a[n][i][1][p]:=a[n][1][p-1]+a[n][1][p-1];

    a[n][i][n][p]:=a[n][n][p-1]+a[n][n][p-1];

    a[i][1][1][p]:=a[1][1][p-1]+a[1][1][p-1];

    a[i][1][n][p]:=a[1][n][p-1]+a[1][n][p-1];

    a[i][n][1][p]:=a[n][1][p-1]+a[n][1][p-1];

    a[i][n][n][p]:=a[n][n][p-1]+a[n][n][p-1];

    end;

    a[1][1][1][p]:=a[1][1][2][p-1]+a[1][2][1][p-1]+a[2][1][1][p-1];

    a[1][1][n][p]:=a[1][1][n-1][p-1]+a[1][2][n][p-1]+a[2][1][n][p-1];

    a[1][n][1][p]:=a[1][n][2][p-1]+a[1][n-1][1][p-1]+a[2][n][1][p-1];

    a[1][n][n][p]:=a[1][n][n-1][p-1]+a[1][n-1][n][p-1]+a[2][n][n][p-1];

    a[n][1][1][p]:=a[n][1][2][p-1]+a[n][2][1][p-1]+a[n-1][1][1][p-1];

    a[n][1][n][p]:=a[n][1][n-1][p-1]+a[n][2][n][p-1]+a[n-1][1][n][p-1];

    a[n][n][1][p]:=a[n][n][2][p-1]+a[n][n-1][1][p-1]+a[n-1][n][1][p-1];

    a[n][n][n][p]:=a[n][n][n-1][p-1]+a[n][n-1][n][p-1]+a[n-1][n][n][p-1];

    end;

    writeln(a[1][1][m][o]);

    end.

    巨猥琐的程序。。。。。

  • 0
    @ 2009-09-05 21:15:08

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    第一次用三维数组,还是用暴力 不过大家都一样!!

  • 0
    @ 2009-08-29 11:56:51

    超WS的水题...1次ms..为什么通过的人那么少..

    分顶点和非顶点讨论...非顶点处理和08普及组的传球游戏一样...

    然后画张图...给每条边定个编号...顶点的值就是相连3条边里最靠近该顶点的3个顶点的和..

  • 0
    @ 2009-08-22 19:06:07

    var

    i,h,o,n,m:longint;

    a,b:array [0..31,0..31,0..31] of int64;

    begin

    readln(o,n,m);

    a[1,1,m]:=1;

    for h:=1 to o do

    begin

    for i:=0 to n+1 do

    begin

    b[1,1,i]:=0;

    b[1,n,i]:=0;

    b[n,1,i]:=0;

    b[n,n,i]:=0;

    b:=0;

    b:=0;

    b:=0;

    b:=0;

    b[1,i,1]:=0;

    b[1,i,n]:=0;

    b[n,i,1]:=0;

    b[n,i,n]:=0;

    end;

    for i:=1 to n do

    begin

    inc(b,a); inc(b,a);

    inc(b,a); inc(b,a);

    inc(b,a); inc(b,a);

    inc(b,a); inc(b,a);

    inc(b[1,i-1,1],a[1,i,1]); inc(b[1,i+1,1],a[1,i,1]);

    inc(b[1,i-1,n],a[1,i,n]); inc(b[1,i+1,n],a[1,i,n]);

    inc(b[n,i-1,1],a[n,i,1]); inc(b[n,i+1,1],a[n,i,1]);

    inc(b[n,i-1,n],a[n,i,n]); inc(b[n,i+1,n],a[n,i,n]);

    inc(b[1,1,i-1],a[1,1,i]); inc(b[1,1,i+1],a[1,1,i]);

    inc(b[1,n,i-1],a[1,n,i]); inc(b[1,n,i+1],a[1,n,i]);

    inc(b[n,1,i-1],a[n,1,i]); inc(b[n,1,i+1],a[n,1,i]);

    inc(b[n,n,i-1],a[n,n,i]); inc(b[n,n,i+1],a[n,n,i]);

    end;

    a:=b;

    end;

    writeln(a[1,1,m]);

    end.

  • 0
    @ 2009-08-19 19:07:47

    bt题目……

    膜拜29行的前辈。。

  • 0
    @ 2009-08-14 19: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

    暴力!暴利!!

    #include

    using namespace std;

    int main()

    {

    __int64 a[35][35][35],b[35][35][35];

    int i,j,o,m,n;

    cin >> o >> n >> m;

    memset(a,0,sizeof(a));

    a[1][1][m]=1;

    for (i=1;i

  • 0
    @ 2009-08-09 11:40:19

    如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html

  • 0
    @ 2009-08-09 11:06:12

    额,一定要用int64才行......

    郁闷.....

  • 0
    @ 2009-08-01 13:50:18

    program p1502;

    var p1,p2,p3,i,j,k,o,m,n:longint;

    a,b:array[0..12,0..31]of int64;

    w:array[0..8]of int64;

    x1,x2,x3,y1,y2,y3:array[0..8]of longint;

    begin

    readln(o,n,m);

    fillchar(a,sizeof(a),0);

    fillchar(x1,sizeof(x1),0);

    fillchar(x2,sizeof(x2),0);

    fillchar(x3,sizeof(x3),0);

    fillchar(y1,sizeof(y1),0);

    fillchar(y2,sizeof(y2),0);

    fillchar(y3,sizeof(y3),0);

    fillchar(w,sizeof(w),0);

    x1[1]:=1;y1[1]:=1;

    x2[1]:=2;y2[1]:=1;

    x3[1]:=5;y3[1]:=1;

    x1[2]:=1;y1[2]:=n;

    x2[2]:=3;y2[2]:=1;

    x3[2]:=11 ;y3[2]:=1;

    x1[3]:=11;y1[3]:=n;

    x2[3]:=9;y2[3]:=n;

    x3[3]:=10;y3[3]:=1;

    x1[4]:=5;y1[4]:=n;

    x2[4]:=7;y2[4]:=1;

    x3[4]:=9;y3[4]:=1;

    x1[5]:=2;y1[5]:=n;

    x2[5]:=4;y2[5]:=1;

    x3[5]:=6;y3[5]:=1;

    x1[6]:=6;y1[6]:=n;

    x2[6]:=8;y2[6]:=1;

    x3[6]:=7;y3[6]:=n;

    x1[7]:=8;y1[7]:=n;

    x2[7]:=10;y2[7]:=n;

    x3[7]:=12;y3[7]:=n;

    x1[8]:=3;y1[8]:=n;

    x2[8]:=4;y2[8]:=n;

    x3[8]:=12;y3[8]:=1;

    fillchar(b,sizeof(b),0);

    if (m=1)or(m=n) then

    begin

    dec(o);

    a[1][2]:=1;

    a[2][2]:=1;

    a[3][2]:=1;

    m:=1;

    end

    else a[1][m]:=1;

    for k:=1 to o do

    begin

    for i:=1 to 12 do

    for j:=2 to n-1 do

    b:=a+a;

    for i:=1 to 8 do

    begin

    if y1[i]=1 then p1:=2 else p1:=n-1;

    if y2[i]=1 then p2:=2 else p2:=n-1;

    if y3[i]=1 then p3:=2 else p3:=n-1;

    w[i]:=a[x1[i],p1]+a[x2[i],p2]+a[x3[i],p3];

    end;

    for i:=1 to 12 do

    for j:=2 to n-1 do

    a[i][j]:=b[i][j];

    for i:=1 to 8 do

    begin

    a[x1[i],y1[i]]:=w[i];

    a[x2[i],y2[i]]:=w[i];

    a[x3[i],y3[i]]:=w[i];

    end;

    end;

    writeln(a[1][m]);

    end.

    很猥琐的过了

  • 0
    @ 2009-07-29 09:18:26

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    来硬的就行

  • 0
    @ 2009-07-27 10:30:58

    我的程序代码在下面

    题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题

    题题题题题题题题题题题题题题题题题题题题题题题题题题题题水水水水题题题题题

    题题题题题题题题题题题题题题题题题题题题题题题题水水水水水水水水水题题题题

    题题题题题题题题题题题题题题题题题题水水水水水水水水水水水水水水水题题题题

    题题题题题题题题题题题题题题题题水水水水水水水水水水水水水水水题题题题题题

    题题题题题题题题题题题水水水水题水水水水水水水水水水水题题题题题题题题题题

    题题题题题题题题水水水水水水水题水水水题题水水水水水题题题题题题题题题题题

    题题题水水水水水水水水水水水水题题题题题题水水水水题题题题题题题题题题题题

    题水水水水水水水水水水水水水水题题题题题题水水水水题题题题题题题题题题题题

    题水水水水水水水水水水水水题题题题题题题水水水水水水水水水水水题题题题题题

    题水水水水水水水水水水水水题题题题题题水水水水水水水水水水水水水水题题题题

    题题水水水水水水水水水水题题题题题水水水水水水题题题水水水水水水水题题题题

    题题题题题题题题水水水水题题题题题水水水水题题题题题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水题题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水水水题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水水水题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水题题水水水水题题水水水水水题题题题题

    题题水水题题题水水水水水题题题题水水水题题水水水题题题水水水水水题题题题题

    题题水水水水水水水水水水题题题题题水水题题水水题题题题水水水水水题题题题题

    题题题水水水水水水水水水题题题题题题题题水水水题题题题水水水水题题题题题题

    题题题题题水水水水水水水题题题题题题题题水水水题水水水水题题题题题题题题题

    题题题题题题水水水水水水题题题题题题题水水水水题题水水水水题题题题题题题题

    题题题题题题题题题水水水题题题题题题水水水水水题题题水水水水水水水题题题题

    题题题题题题题题题题题题题题题题水水水水水水题题题题题水水水水水水题题题题

    题题题题题题题题题题题题题题题水水水水水水题题题题题题水水水水水水水题题题

    题题题题题题题题题题题题题题水水水水水题题题题题题题题题水水水水水水题题题

    题题题题题题题题题题题题题水水水水水题题题题题题题题题题题水水水水题题题题

    题题题题题题题题题题题题水水水题题题题题题题题题题题题题题题水水水题题题题

    题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题

  • 0
    @ 2009-07-22 10:56:45

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    就普通的穷举 也照样可以秒杀AC~(≧▽≦)/~啦啦啦

  • 0
    @ 2009-07-17 22:43:22

    一个字 搜!

  • 0
    @ 2009-07-11 12:56:52

    29行

    秒杀

    此题实在烦人

信息

ID
1502
难度
3
分类
模拟 点击显示
标签
递交数
548
已通过
281
通过率
51%
被复制
2
上传者