题解

273 条题解

  • 0
    @ 2008-12-09 19:19:07

    C++的精湛

    #include

    int main(void)

    {

    int (*f)[1001]=new int[1001][1001];

    int n,m,maxn=-99999999;

    scanf("%d%d",&n,&m);

    for (int i=1;iy?y:x)

    if (c==1)

    {

    f[i][j]=min(min(f[j],f[i][j-1]),f[j-1])+1;

    maxn=max(maxn,f[i][j]);

    }

    }

    printf("%d\n",maxn);

    delete []f;

    return 0;

    }

  • 0
    @ 2008-12-06 20:14:53

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    DP~~~一次AC~~~0)

    ***|Hpec killed P1057 with knife

  • 0
    @ 2008-11-20 01:05:18

    用C的同志们加油

    #include

    int arr[1001][1001];

    int f[1001][1001];

    int main(void)

    {

    int i,j,n,m,min,max=0;

    scanf("%d%d",&n,&m);

    for(i=1;i

  • 0
    @ 2008-11-18 22:27:57

    for i:=1 to n do

    for j:=1 to m do

    if (a0)and(a0)and(a0) then

    f:=min(f,f,f)+1

    else f:=1;

    少判断一种情况居然AC了,无语。。。

    if (a0)and(a0)and(a0) then

    这句要加a0.............

  • 0
    @ 2008-11-13 17:42:36

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    本题可以使用最大子矩形写,另外还有一个DP方法

    f[i][j]==min(f[j],f[i][j-1],f[j-1])+1 map[i][j]0

  • 0
    @ 2008-11-12 09:24:54

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    Accepted 有效得分:100 有效耗时:212m

  • 0
    @ 2008-11-10 14:02:20

    最大子矩阵练手题

  • 0
    @ 2008-11-09 18:05:42

    看了各位牛人的讲解后的结果,谢谢!

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

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var max,ch,i,j,n,m:longint;map:array[0..1001,0..1001]of integer;

    function min(a,b,c:integer):integer;

    begin

    if a>b then a:=b;

    if a>c then a:=c;

    exit(a);

    end;

    begin

    readln(n,m);

    max:=0;

    fillchar(map,sizeof(map),0);

    for i:=1 to n do

    begin

    for j:=1 to m do

    begin

    read(ch);

    if ch0 then

    begin

    map:=min(map,map,map)+1;

    if map>max then max:=map;

    end;

    end;

    readln;

    end;

    writeln(max);

    end.

  • 0
    @ 2008-11-07 19:48:09

    program id1057;

    var

    a:array[0..1001,0..1001]of boolean;

    i,j,k,m,n,le,ii:integer;

    procedure init;

    begin

    readln(n,m);

    for i:=1 to n do

    for j:=1 to m do

    begin

    read(k);

    if k=0 then a:=false

    else a:=true;

    end;

    end;

    procedure make(i,j:integer);

    var

    i1,j1:integer;

    b:boolean;

    begin

    repeat

    ii:=ii+1;

    b:=true;

    if athen

    for i1:=i to (i+ii)do

    begin

    b:=b and(a[i1,j+ii]);

    if not(b)then break;end;

    if b then

    for i1:=j to (j+ii)do

    begin

    b:=b and(a);

    if not(b)then break;end;

    until not(b);

    if ii>le then le:=ii;

    end;

    begin

    fillchar(a,sizeof(a),false);

    init;

    le:=0;

    for i:=1 to n do

    for j:=1 to m do

    begin

    ii:=0;

    make(i,j);

    end;

    writeln(le);

    end.

    编译通过...

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

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

     ├ 错误行输出 3

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

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

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

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

     ├ 错误行输出 4

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

     ├ 错误行输出 18

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

     ├ 错误行输出 17

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

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

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

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

    泪奔~

    跪求CK教主,为什么不对~

  • 0
    @ 2008-11-07 12:07:46

    var

    max,min,i,j,n,m:integer;

    f:array[1..1000,1..1000]of integer;

    begin

    readln(n,m);

    max:=0;

    for i:=1 to n do for j:=1 to m do read(f);

    for i:=2 to n do for j:=2 to m do if f0 then

    begin

    min:=10000;

    if f

  • 0
    @ 2008-11-06 23:37:05

    鉴于偶自己开发的方法和各位都不一样所以贴上来得色得色..- -\

    明白了这样的数组aa[1001][1001]要设成全局变量,不然运行时会报错...

    但不知道为啥...希望高人指点...

    又因为没删中间看过程的输出.交了三次才AC...

    不容易啊...

    #include

    int aa[1001][1001];

    int max,n,m;

    int main()

    {

    int i,j,k,mk1,mk2;

    scanf("%d %d",&n,&m);

    for(i=0;i

  • 0
    @ 2008-11-04 22:05:20

    编译通过...

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

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

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

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

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

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

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

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

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

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

    我是初学者,这种题型以前没见过。

    感谢各位大大,我是看了各位的题解后才编出的这个程序。

  • 0
    @ 2008-11-04 18:12:03

    #include

    #define maxn 1000

    #define maxm 1000

    #define get_min(a,b) ((a)

  • 0
    @ 2008-11-03 19:41:05

    动规过一遍,秒杀……

    暴搜过一遍,居然还秒杀……

    Dragon 是神仙怎么着…………

  • 0
    @ 2008-11-03 15:16:47

    ...虽然过了,但第五个数据错了好几遍,为什么我输出的是0,他的是1呢

    我是在做的时候记录max,后来改成最后循环做一遍,就对了,有点奇怪

  • 0
    @ 2008-11-03 12:21:30

    编译通过...

    ├ 测试数据 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-02 21:19:19

    初始化只有一句: f:=map map是读入的地图

    f:=min(f,f,f)+1; 条件,a=a=a=a=1

    ans:=max(f);

    哈,想不到我这个大傻也有头一次交就AC的时候,也许是因为先做了奶牛浴场那题才看到这个题的缘故……

    这个题应该是传说中的‘最优子矩阵系列’的入门题吧

  • 0
    @ 2008-11-01 14:43:45

    编译错误!!!!!!!!...

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

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

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

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

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

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

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

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

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

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

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

    Accepted 有效得分:100 有效耗时:100000000year

  • 0
    @ 2008-10-29 15:32:55

    Var

    n,m,i,j,num:Integer;

    a:Array[0..1000,0..1000,0..1] Of Integer;

    Begin

    Readln(n,m);

    FillChar(a,SizeOf(a),0);

    num:=1;

    For i:= 1 To m Do

    For j:= 1 To n Do

    Begin

    Read(a);

    If a=1 Then a:=1;

    If a+a+a=3 Then

    a:=a+a;

    If a>num Then num:=a;

    End;

    Write(num);

    End.

    为什么会错?迷糊啊!大家一定要告诉我哈!

信息

ID
1057
难度
4
分类
动态规划 点击显示
标签
(无)
递交数
6668
已通过
3074
通过率
46%
被复制
8
上传者