题解

53 条题解

  • 0
    @ 2009-10-09 15:36:09

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    201 被报超时 我无语

    已经不止一次了

  • 0
    @ 2009-10-09 10:04:39

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    O(n)

  • 0
    @ 2009-09-14 23:17:44

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    感谢楼下大牛

    暴力搜索,不是80就是90,第十点固定超,八九点轮流超时

    加上一点小小的剪枝就A了

    var a,b:array[1..1000000] of longint;

    n,i,m,k,now:longint;

    ch,rh:boolean;

    begin

    read(n,m);

    for i:=1 to n do begin

    read(a[i],b[i]);

    m:=m-a[i];

    a:=a[i];

    b:=b[i];

    end;

    a[1]:=m;

    a[n+1]:=m;

    i:=1;

    while i=a then now:=now+b-a else begin rh:=false; break; end;

    if rh then begin ch:=true; write(i,' '); i:=i+1; end else i:=i+k;

    end;

    if not ch then write(-1);

    end.

    晒程序拉!不要copy上交,仅供查看即调试

    讲了一百分点T_T

  • 0
    @ 2009-08-18 15:12:21

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var a,b:array[1..10000000] of longint;

    n,i,j,l,t,k,oil:longint;

    begin

    readln(n,l);

    for i:=1 to n do

    begin

    readln(a[i],b[i]);

    l:=l-a[i];

    end;

    a[1]:=l;

    for i:=n+1 to 2*n-1 do

    begin

    a[i]:=a;

    b[i]:=b;

    end;

    k:=0;

    i:=1;

    while i

  • 0
    @ 2009-07-25 23:18:59

    真神奇:早上90分晚上AC……

    同样的程序~

  • 0
    @ 2009-07-25 10:44:05

    第8个点是什么?为什么会超时/无输出?

  • 0
    @ 2009-07-19 16:51:13

    用单调队列可以做到O(n)

  • 0
    @ 2009-05-28 14:17:10

    第一次,直接模拟……80分

    第二次,加个小剪枝……90分

    第三次,布尔数组剪枝……AC

    我的思路:

    首先,计算出各站的存油量与到下一站的距离的差,

    若差为负数,当然这一站就不能作为首发站。

    然后,模拟车从第i站开始到每一站后的剩余油量,

    若不足,则本站不能作为首发站,

    并且,路经各站中,若第k站存油量不到当时到此站时的剩余油量,

    则此站亦不能作为首发站。

  • 0
    @ 2009-05-15 12:06:28

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-05-08 13:29:04

    单调队列

    O(n)

  • 0
    @ 2009-03-17 21:53:05

    这是数学题吧...

    首先设想车在第一站装上了足够多的油,这样开始环行

    每到一处,还是把油站的油加进油箱

    因为所有油站的油正好是够跑一圈

    所以我们会发现这样跑一圈回到第一站时

    油箱里的油跟出发时是一样多的

    所以一定是可以有解的

    那么只要记录下到每个油站时我们油箱里还剩多少油(刚到达,还没加入这个油站的油)

    假设到第k站是油最少(可能存在很多个k)

    那么我们从第k站出发,而油箱空空如也

    也可以恰好跑完一圈,而不会出现中途没有油的情况

    不用管第n站到第一站的距离了

  • 0
    @ 2009-02-17 17:31:55

    O(n)的动归。

    由于是个环,先把他复制一遍放到后面。然后,第i个点能环游的条件是能从这点走到第i+n点。

    我们设一个函数f[i]=(k,left)表示从第i个点向后走最多能走到第k个点,并剩下可走left长度的油。

    显然,i能环游的条件是f[i].k>=i+n

    下面是状态转移。

    1:先置k=i表示当前在k处。再置left=s[i]表示当前剩余油量。

    2:如果left

  • 0
    @ 2008-11-11 20:48:08

    楼下wajiyu的方法蛮好,不过在Vijos Dolphin上竟然过不了,而在Vivid Puppy上轻松0MS - -

  • 0
    @ 2008-11-07 19:25:20

    庆祝39题AC

    模拟+剪枝=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
    @ 2008-11-05 18:59:11

    编译通过...

    ├ 测试数据 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-10-29 20:48:41

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var

    n,l,oil,i,j:longint;

    a,b:array[1..10000000]of longint;

    ok,can:boolean;

    begin

    readln(n,l);

    for i:=1 to n do

    begin

    readln(a[i],b[i]);

    l:=l-a[i];

    end;

    a[1]:=l;

    for i:=n+1 to 2*n-1 do

    begin

    a[i]:=a;

    b[i]:=b;

    end;

    can:=false;

    i:=1;

    while i

  • 0
    @ 2008-10-28 21:08:34
  • 0
    @ 2008-10-28 14:40:01

    第一次交忘了把为了调试开小的数组弄大,结果是这样。编译通过...├ 测试数据 01:答案正确... 0ms├ 测试数据 02:答案正确... 0ms├ 测试数据 03:答案正确... 0ms├ 测试数据 04:运行时错误...|错误号: -1073741571├ 测试数据 05:运行时错误...|错误号: -1073741571├ 测试数据 06:运行时错误...|错误号: -1073741571├ 测试数据 07:运行时错误...|错误号: -1073741571├ 测试数据 08:运行时错误...|错误号: -1073741571├ 测试数据 09:运行时错误...|错误号: -1073741571├ 测试数据 10:运行时错误...|错误号: -1073741571-------------------------Unaccepted 有效得分:30 有效耗时:0ms

  • 0
    @ 2008-10-21 20:47:38

    用sum[i]表示由第1个加油站开始开到第i+1个加油站途中把1~i加油站的油全加了然后油箱所剩的油为多少..sum[i]有可能0对于任意(i

  • 0
    @ 2008-09-26 22:46:13

    编译通过...

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

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

    ├ 测试数据 03:答案错误...程序输出比正确答案长

    ├ 测试数据 04:答案错误...程序输出比正确答案长

    ├ 测试数据 05:答案错误...程序输出比正确答案长

    ├ 测试数据 06:答案错误...程序输出比正确答案长

    ├ 测试数据 07:运行时错误...|错误号: -1073741571

    ├ 测试数据 08:运行时错误...|错误号: -1073741571

    ├ 测试数据 09:运行时错误...|错误号: -1073741571

    ├ 测试数据 10:运行时错误...|错误号: -1073741571

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

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

信息

ID
1091
难度
5
分类
数据结构 | 单调队列 点击显示
标签
(无)
递交数
1080
已通过
354
通过率
33%
被复制
7
上传者