53 条题解
-
0yzl609271536 LV 10 @ 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 有效耗时:118ms201 被报超时 我无语
已经不止一次了 -
02009-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 有效耗时:72msO(n)
-
02009-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 -
02009-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 有效耗时:165msvar 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 -
02009-07-25 23:18:59@
真神奇:早上90分晚上AC……
同样的程序~ -
02009-07-25 10:44:05@
第8个点是什么?为什么会超时/无输出?
-
02009-07-19 16:51:13@
用单调队列可以做到O(n)
-
02009-05-28 14:17:10@
第一次,直接模拟……80分
第二次,加个小剪枝……90分
第三次,布尔数组剪枝……AC
我的思路:
首先,计算出各站的存油量与到下一站的距离的差,
若差为负数,当然这一站就不能作为首发站。然后,模拟车从第i站开始到每一站后的剩余油量,
若不足,则本站不能作为首发站,
并且,路经各站中,若第k站存油量不到当时到此站时的剩余油量,
则此站亦不能作为首发站。 -
02009-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 -
02009-05-08 13:29:04@
单调队列
O(n) -
02009-03-17 21:53:05@
这是数学题吧...
首先设想车在第一站装上了足够多的油,这样开始环行
每到一处,还是把油站的油加进油箱
因为所有油站的油正好是够跑一圈
所以我们会发现这样跑一圈回到第一站时
油箱里的油跟出发时是一样多的所以一定是可以有解的
那么只要记录下到每个油站时我们油箱里还剩多少油(刚到达,还没加入这个油站的油)
假设到第k站是油最少(可能存在很多个k)
那么我们从第k站出发,而油箱空空如也
也可以恰好跑完一圈,而不会出现中途没有油的情况不用管第n站到第一站的距离了
-
02009-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 -
02008-11-11 20:48:08@
楼下wajiyu的方法蛮好,不过在Vijos Dolphin上竟然过不了,而在Vivid Puppy上轻松0MS - -
-
02008-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 -
02008-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 -
02008-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 有效耗时:0msvar
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 -
02008-10-28 21:08:34@
-
02008-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
-
02008-10-21 20:47:38@
用sum[i]表示由第1个加油站开始开到第i+1个加油站途中把1~i加油站的油全加了然后油箱所剩的油为多少..sum[i]有可能0对于任意(i
-
02008-09-26 22:46:13@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案错误...程序输出比正确答案长
├ 测试数据 04:答案错误...程序输出比正确答案长
├ 测试数据 05:答案错误...程序输出比正确答案长
├ 测试数据 06:答案错误...程序输出比正确答案长
├ 测试数据 07:运行时错误...|错误号: -1073741571
├ 测试数据 08:运行时错误...|错误号: -1073741571
├ 测试数据 09:运行时错误...|错误号: -1073741571
├ 测试数据 10:运行时错误...|错误号: -1073741571
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:20 有效耗时:0ms