142 条题解

  • 7
    @ 2008-07-27 10:20:25

    难道就没有一个不交表的吗??

    难道做题就是为了AC吗???

  • 3
    @ 2014-02-20 22:23:42

    #include<iostream>
    using namespace std;
    int main(){
    int n;
    int i;
    int a[27]={0,0,0,0,0,1,1,1,1,3,3,3,6,6,10,10,15,21,21,28,28,35,30,30,27,12};
    cin>>n;
    cout<<a[n];
    return 0;
    }
    打表求超越!

  • 1
    @ 2018-02-22 19:35:09

    #include<iostream>
    #include<cmath>
    #include<cstring>
    #include<cstdlib>
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<set>
    #include<map>
    #include<string>
    using namespace std;
    const int inf = 1<<29;
    const long long int INF=1e18;
    int n,p[50],ans=0;
    bool vis[50];
    void pd()
    {
    int t=0,k=1;
    for(int j=1;j<=25;j+=5)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=2;j<=25;j+=5)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=3;j<=25;j+=5)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=4;j<=25;j+=5)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=5;j<=25;j+=5)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=1;j<=25;j+=6)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=21;j>=1;j-=4)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=1;j<=5;j++)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=6;j<=10;j++)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=11;j<=15;j++)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=16;j<=20;j++)
    k*=p[j];
    t+=k;
    k=1;
    for(int j=21;j<=25;j++)
    k*=p[j];
    t+=k;
    if(!vis[t])
    {
    ans+=t;
    vis[t]=true;
    }
    }
    void dfs(int step,int x)
    {
    if(step==n)
    {
    pd();
    return ;
    }
    for(int i=x;i<=25;i++)
    {
    if(p[i]==0)
    {
    p[i]=1;
    dfs(step+1,i);
    p[i]=0;
    }
    }

    }
    int main()
    {
    scanf("%d",&n);
    memset(vis,false,sizeof(vis));
    memset(p,0,sizeof(p));
    dfs(0,1);
    cout<<ans<<endl;
    }

  • 0
    @ 2016-09-02 20:36:32

    #include <cstdio>

    int n,A[5][5]={0},vis[15]={0};

    void Q(){
    int K=0,flag;

    for(int i=0;i<5;i++){
    flag=1;
    for(int j=0;j<5;j++)
    flag*=A[i][j]==1;
    if(flag) K++;
    }

    for(int i=0;i<5;i++){
    flag=1;
    for(int j=0;j<5;j++)
    flag*=A[j][i]==1;
    if(flag) K++;
    }

    flag=1;
    for(int i=0;i<5;i++)
    flag*=A[i][i]==1;
    if(flag) K++;

    flag=1;
    for(int i=0;i<5;i++)
    flag*=A[i][5-i-1]==1;
    if(flag) K++;

    vis[K]=1;
    }

    void dfs(int step,int x){
    if(step==n){
    Q();
    return;
    }
    int pi,pj;
    for(int i=x+1;i<=24;i++){
    pi=i/5;
    pj=i-5*pi;
    if(A[pi][pj]==0){
    A[pi][pj]=1;
    dfs(step+1,i);
    A[pi][pj]=0;
    }
    }

    }

    int main(){
    scanf("%d",&n);
    if(n<=4){
    printf("0");
    return 0;
    }
    dfs(0,-1);
    int sum=0;
    for(int i=1;i<=12;i++)
    sum+=i*vis[i];
    printf("%d",sum);
    return 0;
    }

  • 0
    @ 2015-09-03 13:57:03

    #include <iostream>
    using namespace std;
    int n,ans;
    bool map[6][6],v[20];
    void add()
    {
    int t=0;
    for(int i=1;i<=5;i++)
    {
    if(map[i][1]==1 && map[i][2]==1 && map[i][3]==1 && map[i][4]==1 && map[i][5]==1)
    t++;
    if(map[1][i]==1 && map[2][i]==1 && map[3][i]==1 && map[4][i]==1 && map[5][i]==1)
    t++;
    }
    if(map[1][1]==1 && map[2][2]==1 && map[3][3]==1 && map[4][4]==1 && map[5][5]==1)
    t++;
    if(map[5][1]==1 && map[4][2]==1 && map[3][3]==1 && map[2][4]==1 && map[1][5]==1)
    t++;
    if(v[t]==0)
    {
    ans+=t;
    v[t]=true;
    }
    }
    void down(int k,int l)
    {
    int x=(k-1)/5+1,y=(k-1)%5+1;
    if(l==n)
    {
    add();
    return ;
    }
    for (int i=k+1;i<=25;i++)
    {
    int x1=(i-1)/5+1,y1=(i-1)%5+1;
    map[x1][y1]=1;
    down(i,l+1);
    map[x1][y1]=0;
    }
    }
    int main()
    {
    cin >> n;
    for (int i=1;i<=25;i++)
    {
    int x=(i-1)/5+1,y=(i-1)%5+1;
    map[x][y]=1;
    down(i,1);
    map[x][y]=0;
    }
    cout << ans << endl;
    return 0;
    }
    不打表,真汉子

  • 0
    @ 2012-10-31 21:08:10

    测试数据 01:答案正确... (0ms, 580KB)

    ├ 测试数据 02:答案正确... (0ms, 580KB)

    ├ 测试数据 03:答案正确... (0ms, 580KB)

    ├ 测试数据 04:运行超时... (?, 508KB)

    ├ 测试数据 05:答案正确... (0ms, 580KB)

    ├ 测试数据 06:答案正确... (0ms, 580KB)

    ├ 测试数据 07:答案正确... (0ms, 580KB)

    ├ 测试数据 08:答案正确... (0ms, 580KB)

    ├ 测试数据 09:答案正确... (0ms, 580KB)

    ├ 测试数据 10:答案正确... (0ms, 580KB)

    打表的问题……

  • 0
    @ 2012-10-21 10:34:34

    编译通过...

    ├ 测试数据 01:答案正确... (0ms, 580KB)

    ├ 测试数据 02:答案正确... (0ms, 580KB)

    ├ 测试数据 03:答案正确... (0ms, 580KB)

    ├ 测试数据 04:答案正确... (0ms, 580KB)

    ├ 测试数据 05:答案正确... (0ms, 580KB)

    ├ 测试数据 06:答案正确... (0ms, 580KB)

    ├ 测试数据 07:答案正确... (0ms, 580KB)

    ├ 测试数据 08:答案正确... (0ms, 580KB)

    ├ 测试数据 09:答案正确... (0ms, 580KB)

    ├ 测试数据 10:答案正确... (0ms, 580KB)

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

    Accepted / 100 / 0ms / 580KB

    打表秒过有木有!

    下面打表的别蒙人,那个数组应该是[0..25]的,敢问[1..26]是从哪里出来的?

  • 0
    @ 2012-10-07 21:09:18

    const 

       dx:array[1..26]of integer=(0,0,0,0,0,1,1,1,1,3,3,3,6,6,10,10,15,21,21,28,28,35,30,30,27,12); //求解这个当n=5时候为什么是0?当n=5不应该是1吗?

    var 

      n:integer; 

    begin 

       readln(n); 

       writeln(dx[n]);   

    end. 

    • @ 2013-11-01 08:13:09

      被代码坑了吧 writeln(dx[n+1])。。。。。。 当n=5时 就是1。。。。。。

  • 0
    @ 2012-08-14 23:10:00

    AC25题纪念!!

    打表万岁

  • 0
    @ 2012-08-04 15:13:25

    没想到我的第40AC。。是打表这样猥琐的过了

  • 0
    @ 2012-08-02 15:30:31

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    点击查看代码

    人工穷举,耗时短,秒杀,再慢的机器也吃得消

  • 0
    @ 2010-07-14 12:47:56

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2010-07-04 17:01:32

    这个出题的不知道是真的傻还是忽悠人啊?

  • 0
    @ 2010-03-18 21:45:27

    var n,s:integer;

    a:array[1..25]of boolean;

    x:array[1..50]of boolean;

    function ok:integer;

    begin

    ok:=0;

    if a[1]and a[2]and a[3]and a[4]and a[5]then inc(ok);

    if a[6]and a[7]and a[8]and a[9]and a[10]then inc(ok);

    if a[11]and a[12]and a[13]and a[14]and a[15]then inc(ok);

    if a[16]and a[17]and a[18]and a[19]and a[20]then inc(ok);

    if a[21]and a[22]and a[23]and a[24]and a[25]then inc(ok);

    if a[1]and a[6]and a[11]and a[16]and a[21]then inc(ok);

    if a[2]and a[7]and a[12]and a[17]and a[22]then inc(ok);

    if a[3]and a[8]and a[13]and a[18]and a[23]then inc(ok);

    if a[4]and a[9]and a[14]and a[19]and a[24]then inc(ok);

    if a[5]and a[10]and a[15]and a[20]and a[25]then inc(ok);

    if a[1]and a[7]and a[13]and a[19]and a[25]then inc(ok);

    if a[5]and a[9]and a[13]and a[17]and a[21]then inc(ok);

    end;

    procedure try(i,r:integer);

    var k:integer;

    begin

    if 26-i4 then try(1,n);

    writeln(s);

    end.

  • 0
    @ 2010-03-09 13:07:39

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    把棋盘拉成一线搜索+对称性剪枝,最终秒杀……这次剪枝应该都是对的吧

    program five;

    var

    a:array[1..25]of boolean;

    s:set of 0..12;

    i,n:integer;

    t:longint;

    function count:integer;

    begin

    count:=0;

    if a[1] and a[2] and a[3] and a[4] and a[5] then inc(count);

    if a[6] and a[7] and a[8] and a[9] and a[10] then inc(count);

    if a[11] and a[12] and a[13] and a[14] and a[15] then inc(count);

    if a[16] and a[17] and a[18] and a[19] and a[20] then inc(count);

    if a[21] and a[22] and a[23] and a[24] and a[25] then inc(count);

    if a[1] and a[6] and a[11] and a[16] and a[21] then inc(count);

    if a[2] and a[7] and a[12] and a[17] and a[22] then inc(count);

    if a[3] and a[8] and a[13] and a[18] and a[23] then inc(count);

    if a[4] and a[9] and a[14] and a[19] and a[24] then inc(count);

    if a[5] and a[10] and a[15] and a[20] and a[25] then inc(count);

    if a[1] and a[7] and a[13] and a[19] and a[25] then inc(count);

    if a[5] and a[9] and a[13] and a[17] and a[21] then inc(count);

    end;

    procedure dfs(i,r:integer);

    begin

    {inc(t);}

    if i+r>26 then exit;

    if r=0 then begin s:=s+[count];exit;end;

    if i=26 then exit;

    a[i]:=true;

    {cut}

    if a[5] and (not a[1]) then begin a[i]:=false;exit;end;

    if a[25] and (not a[1]) then begin a[i]:=false;exit;end;

    if a[21] and (not a[1]) then begin a[i]:=false;exit;end;

    if a[6] and (not a[2]) then begin a[i]:=false;exit;end;

    if a[11] and (not a[3]) then begin a[i]:=false;exit;end;

    if a[14] and (not a[4]) then begin a[i]:=false;exit;end;

    if a[21] and (not a[5]) then begin a[i]:=false;exit;end;

    {been cut}

    dfs(i+1,r-1);

    a[i]:=false;dfs(i+1,r);

    end;

    begin

    readln(n);

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

    s:=[];

    dfs(1,n);

    n:=0;

    for i:=1 to 12 do

    if i in s then n:=n+i;

    writeln(n);

    end.

  • 0
    @ 2009-11-04 11:16:28

    互打;

    program vj1146;

    const

    dx:array[1..26]of integer=(0,0,0,0,0,1,1,1,1,3,3,3,6,6,10,10,15,21,21,28,28,35,30,30,27,12);

    var

    n:integer;

    begin

    readln(n);

    writeln(dx[n]);

    end.

  • 0
    @ 2009-11-02 01:26:27

    打表降rp么?

    俺怎么不认为捏?

    来啥题用啥办法嘛!

  • 0
    @ 2009-10-23 16:12:16

    第一次看错题目

    手工计算出所有答案

    居然拿了50分。。

  • 0
    @ 2009-10-19 23:59:48

    交表:int data[33]={0,0,0,0,0,1,1,1,1,3,3,3,6,6,10,10,15,21,21,28,28,35,30,30,27,12};

  • 0
    @ 2009-10-14 20:10:01

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    非打表过了。 虽然时间长了点,但还是庆祝下吧!~~~

信息

ID
1146
难度
3
分类
搜索 | 搜索与剪枝 点击显示
标签
(无)
递交数
1963
已通过
1055
通过率
54%
被复制
8
上传者