/ Vijos / 题库 / 过河 /

题解

333 条题解

  • 0
    @ 2009-09-17 18:23:34

    编译通过...

    ├ 测试数据 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-16 19:20:00

    状态压缩DP。。

    题解 http://254117343.blog.163.com/

  • 0
    @ 2009-09-13 20:56:47

    AC第50次!哈哈!

    编译通过...

    ├ 测试数据 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-13 20:24:21

    第一次全错:因为状态压缩时st[i] = DIST + st[i -1];漏了st[i - 1]

    第二次:忽略了s == T,一开始就忽略了。

    编译通过...

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

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

    ├ 测试数据 03:答案错误...

     ├ 标准行输出

     ├ 错误行输出

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

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

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

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

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

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

    ├ 测试数据 10:答案错误...

     ├ 标准行输出

     ├ 错误行输出

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

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

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    在此 :感谢 各位大牛,特别是 “1s”——非常厉害的初中生,今年应该高一了吧。

    作为一名ACMer,很高兴能向OI大牛们学习。

  • 0
    @ 2009-09-13 01:47:32

    恶心了我一晚上。。。原来最后一个点s=t数据又大

    这时候不能压缩,也不能使下标越界。。。

  • 0
    @ 2009-09-05 09:55:36

    #include

    int main()

    {

    long int k,l,b[110],p;

    int h,j;

    int s,t,m;

    int a[11000],c[11000];

    scanf("%ld",&l);

    scanf("%d%d%d",&s,&t,&m);

    for (h=1;h

  • 0
    @ 2009-09-04 07:31:28

    var

    l,s,t,m,i,j,k:longint;

    a,b,c:array[0..1000] of longint;

    function f(i:longint):longint;

    var

      v,u,q,o:longint;

    begin

      if c[i]=-1

       then begin

          if i

  • 0
    @ 2009-09-03 22:08:12

    玛维-影之歌

    编译通过...

    ├ 测试数据 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-08-27 13:05:31

    神啊!~我终于AC了

    (热泪盈眶)

  • 0
    @ 2009-08-25 15:18:52

    为什么要把s=t的情况单独处理?好像不单独处理就有2个点过不去

  • 0
    @ 2009-08-24 09:33:07

    编译通过...

    ├ 测试数据 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-19 22:08:14

    谁能告诉我第六个点为什么错误》》??

  • 0
    @ 2009-08-19 10:48:07

    var L,s,t,m,n,i,j,v,best:longint;

    x:array [0..100] of longint;{由左而右记录每个石子的位置}

    a:array [0..100,0..9] of longint;{a为青蛙跳到x[i]-j位置经过的最少石子数}

    b:array [-10..90] of boolean;{b[i]记录能否用s到t这t-s+1种距离从原点到达横坐标为i的位置}

    function can(v:longint):boolean;{判别青蛙能否跳到位置v}

    begin

    if v=s*s-s{可以证明,当v≥s(s-1)时,一定可以用s和s+1两种跳跃距离到达位置v,所以要对s=t作特殊处理}

    then can:=true

    else can:=b[v]

    end;{can}

    begin

    assign(input,'river.in');reset(input);{输入文件读准备}

    readln(L);readln(s,t,m);{读独木桥长度、青蛙一次跳跃的最小距离,最大距离和桥上的石子数}

    for i:=1 to m do read(x[i]);{输入每个石子在数轴上的位置}

    readln; close(input);{关闭输入文件}

    for i:=1 to m-1 do{按照由左而右的顺序排列石子}

    for j:=1 to m-1 do

    if x[j]>x[j+1] then begin v:=x[j];x[j]:=x[j+1];x[j+1]:=v end;{ then }

    n:=m;while x[n]>L do dec(n);{去除独木桥外的石子}

    if s=t{若青蛙每次跳跃的距离唯一,则青蛙过河最少需要踩到的石子数best即为坐标位置为s整倍数的石子数}

    then begin

    best:=0;

    for i:=1 to n do if x[i] mod s=0 then inc(best);

    assign(output,'river.out');rewrite(output);{输出文件写准备}

    writeln(best); {输出best后关闭输出文件并成功退出}

    close(output); halt

    end;{ then }

    fillchar(b,sizeof(b),false);

    b[0]:=true;{计算小范围的情况}

    for i:=1 to 90 do{递推每一个坐标位置}

    for j:=s to t do {枚举青蛙一次跳跃的可能距离,计算青蛙能否跳到坐标位置i}

    b[i]:=b[i] or b;

    for i:=0 to n do{状态转移方程初始化}

    for j:=0 to t-1 do a:=n+1;

    x[0]:=0;{在0位置处增加一个虚拟的石子}

    a[0,0]:=0;{ 青蛙在0位置起跳}

    for i:=1 to n do{递推桥上的每一个石子}

    for j:=0 to t-1 do{枚举每一个可能的跳前位置}

    if x[i]-j

  • 0
    @ 2009-08-18 23:21:45

    小优化 加一个跳跃判断 AC

  • 0
    @ 2009-08-18 18:57:30

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    话说路径压缩只要72就够了。。。

  • 0
    @ 2009-08-10 10:30:55

    传说中最难的DP?!感谢各位大牛的题解支持!!

    现在终于明白了什么叫状态压缩!

    那就是传说中的虫洞跳跃!

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

    编译通过...

    ├ 测试数据 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-09 01:12:00

    学c后编的第一个程序 第一次居然编译错误 但第二次过了

    高兴~~~

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    #include

    int main()

    {

    long int k,l,b[110],p;

    int h,j;

    int s,t,m;

    int a[11000],c[11000];

    scanf("%ld",&l);

    scanf("%d%d%d",&s,&t,&m);

    for (h=1;h

  • 0
    @ 2009-08-07 21:52:42

    记得要排序

    就是因为没排序害我WA

信息

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