/ Vijos / 题库 / 过河 /

题解

333 条题解

  • 0
    @ 2009-10-27 20:10:25

    ac 0ms

    压缩+DP

    program ex;

    var i,j,l,n,count,ans,s,t:longint;

    a:array[0..100]of longint;

    p:array[1..20000]of boolean;

    f:array[0..20000]of longint;

    procedure sort;

    var i,j,temp:longint;

    begin

    for i:=1 to n-1 do

    for j:=i+1 to n do

    if a[i]>a[j] then

    begin

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

    end;

    end;

    procedure compress;

    var i,j,len:longint;

    begin

    if s=t then

    begin

    for i:=1 to n do

    if a[i] mod s=0 then inc(count);

    writeln(count);

    halt;

    end;

    sort;

    len:=0;

    fillchar(p,sizeof(p),false);

    for i:=1 to n do

    begin

    if a[i]-len-a>s*t then len:=a[i]-(a+s*t);

    dec(a[i],len);

    p[a[i]]:=true;

    end;

    end;

    function min(a,b:longint):longint;

    begin

    if a>b then exit(b) else exit(a);

    end;

    procedure dp;

    var i,j:longint;

    begin

    filldword(f,sizeof(f)div 4,maxint);

    f[0]:=0;

    for i:=1 to a[n]+s*t do

    for j:=i-s downto i-t do

    if j>=0 then f[i]:=min(f[i],f[j])+ord(p[i]);

    ans:=maxlongint;

    for i:=a[n]+1 to a[n]+s*t do

    if f[i]

  • 0
    @ 2009-10-24 20:05:54

    编译通过...

    ├ 测试数据 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-10-21 20:04:22

    。。

    以前觉得很难得题,一下就A了。。

    无语。。

    看来水平长了。。。

  • 0
    @ 2009-10-21 12:14:14

    AC爽啊

    编译通过...

    ├ 测试数据 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-10-18 08:22:06

    花了我好长时间,到最后错误反而是变量设重叠了,我晕!!!!!!!

  • 0
    @ 2009-10-15 22:12:59

    编译通过...

    ├ 测试数据 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 to t-1 而不是0 to t ,而且这是一个原则性的错误,因为如果用 0 to t 就得到了错解,而且总是错的。。。。。。。。。。。

    这一题困了我整整一学期,终于弄懂了路径压缩的含义(自己感觉),WA了3次,最终AC了。。。。。。。。。。。

  • 0
    @ 2009-10-15 12:56:31

    一次AC,原来虫洞跳跃是那么神奇!

    AC 4周天纪念

  • 0
    @ 2009-10-13 23:12:19

    苍天啊

    这道题累计花费12小时以上,提交40次以上,今天A了,算我造孽

  • 0
    @ 2009-10-11 11:06:37

    vijos怎么偷数据????????????????????????????????????????????????????????????????????

  • 0
    @ 2009-10-08 18:21:27

    水水的状态压缩

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

  • 0
    @ 2009-10-07 21:38:48

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    L

  • 0
    @ 2009-10-02 17:18:15

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var i,j,l,s,t,m,min1,w:longint;

    a:array[0..103]of longint;

    f:array[-100..260003]of longint;

    x:array[-100..260003]of 0..1;

    function min(x,y:longint):longint;

    begin

    if x>y then min:=y else min:=x;

    end;

    begin

    readln(l);

    readln(s,t,m);

    for i:=-10 to 260003 do f[i]:=1000000;

    fillchar(x,sizeof(x),0);

    for i:=1 to m do read(a[i]);

    if s=t then

    begin

    w:=0;

    for i:=1 to m do if (a[i] mod s=0) then inc(w);

    writeln(w);

    end

    else

    begin

    min1:=maxlongint;

    for i:=1 to m-1 do

    for j:=i+1 to m do if a[i]>a[j] then

    begin

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

    end;

    for i:=1 to m do

    while a[i]-a>2520 do

    for j:=i to m do a[j]:=a[j]-2520;

    for i:=1 to m do inc(x[a[i]]);

    if x[0]=1 then f[0]:=1 else f[0]:=0;

    if l>a[m] then l:=a[m];

    for i:=1 to l+t do

    for j:=s to t do

    begin

    if i>=j then

    begin

    f[i]:=min(f[i],f);

    end;

    if x[i]=1 then inc(f[i]);

    end;

    for i:=l to l+t do if f[i]

  • 0
    @ 2009-10-02 00:12:09

    program p1002stonger;

    var i,sum,l,s,t,m:longint;

    ans{dp},a,b{back}:array[0..100000]of longint ;

    procedure init;

    var i:longint;

    begin

    readln(l);

    readln(s,t,m);

    for i:=1 to m do

    read(a[i]);

    end;

    procedure quicksort(s,t:longint);

    var i,j,t1,x:longint;

    begin

    i:=s;j:=t;

    x:=a[i];

    repeat

    while (a[j]>=x) and(j>i) do dec(j);

    if j>i then begin t1:=a[i];a[i]:=a[j];a[j]:=t1;end;

    while (a[i]

  • 0
    @ 2009-09-27 17:40:09

    编译通过...

    ├ 测试数据 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-09-27 16:32:43

    var

    i,j,k,l,s,t,y,max,tt,min,m:longint;

    a:array[0..101]of longint;

    f:array[-10..100000]of longint;

    v:array[1..100000]of boolean;

    begin

    fillchar(v,sizeof(v),false);

    readln(l);

    readln(s,t,m);

    for i:=1 to m do

    read(a[i]);

    readln;

    for i:=1 to m-1 do

    for j:=i+1 to m do

    if a[j]=max then{从0开时压缩,因为第一个石头可能离原点很远}

    begin

    tt:=a-(a[i]+max);

    for j:=i+1 to m do

    dec(a[j],tt);

    end;

    for i:=1 to m do

    v[a[i]]:=true;

    filldword(f,sizeof(f)div 4,maxint);

    for i:=-10 to 0 do f[i]:=0;

    for i:=1 to a[m]+t do

    for j:=i-t to i-s do

    if (v[i])and(f[j]+1=0) then f[i]:=f[j]+1

    else if (not v[i])and(f[j]=0) then f[i]:=f[j];

    min:=maxint;

    for i:=a[m] to a[m]+t do

    if f[i]=2 时:只需找s=1,t=2时的min即可,将他们各×10就能满足,因为他们的差值已超过可能的最大区间数(10)

    同理:当s=2,t>=3 时:....

    当s=3,t>=4 时:....

    .........

    当s=9,t=10时:所要找的就是:90——100。

    且此时【90,100】满足所有条件,所以将min:=100 }

  • 0
    @ 2009-09-27 14:04:42

    怎一个状态压缩....搞得我吐血....

  • 0
    @ 2009-09-26 16:41:02

    ar

    a:array[0..100]of longint;

    b:array[0..10000]of integer;

    c:array[1..10000]of boolean;

    i,j:integer;

    l,tt:longint;

    s,t,m:integer;

    an,min:integer;

    procedure deal;

    var

    nn:longint;

    begin

    nn:=0;

    for i:=1 to m do

    if a[i]-a>72 then

    begin b[nn+72]:=1;nn:=nn+72;end

    else

    begin b[nn+a[i]-a]:=1;nn:=nn+a[i]-a;end;

    l:=nn;

    end;

    begin

    readln(l);

    readln(s,t,m);

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

    for i:=1 to m do read(a[i]);

    a[0]:=0;

    for i:=1 to m-1 do

    for j:=i+1 to m do

    if a[i]>a[j] then

    begin

    tt:=a[i];

    a[i]:=a[j];

    a[j]:=tt;

    end;

    if s=t then

    begin

    an:=0;

    for i:=1 to m do

    if a[i] mod s=0 then an:=an+1;

    end

    else

    begin

    deal;

    for i:=s to t do c[i]:=true;

    for i:=t to l+t do

    begin

    min:=101;

    for j:=s to t do

    if cand(b

  • 0
    @ 2009-09-23 08:54:15

    这题我们学校网上为什么过不了呢?

    编译通过...

    ├ 测试数据 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-09-21 21:32:17

    编译通过...

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-09-18 20:14:54

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

信息

ID
1002
难度
7
分类
动态规划 点击显示
标签
递交数
25194
已通过
4368
通过率
17%
被复制
64
上传者