333 条题解
-
0
yfz1993 LV 8 @ 2008-11-21 19:21:23
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
program river;
var l,s,t,m,a,b,c,g,h:longint;
x,y:array[0..100000] of longint;
p:array[1..1000000000] of boolean;
procedure init;
begin
readln(l);
readln(s,t,m);
for a:=1 to m do
begin
read(y[a]);
end;
end;
procedure qsort(l,r:longint);
var i,j,mid,n:longint;
begin
i:=l;
j:=r;
mid:=y[(i+j) div 2];
repeat
while (i -
0@ 2008-11-13 09:13:50
本题考的就是状态压缩!DP不是太难
研究了N久!在网上看了个程序!觉得他的压缩方法很好!
以每个石头阶段,只记录石头前面能一步跳到石头的格子~
由前一块石头的状态推出下个石头的状态,之前必须判断能否到达
判断方法:
function can(v:longint):boolean;
begin
if v=s*(s-1) then exit(true) else
exit(b[v]);
end;
说明:只要距离满足v>=s*(s-1)就可以由S和S+1的任意倍数相加获得
详细题解和代码说明可以到我的博客看看
www.onlygod.cn -
0@ 2008-11-11 21:49:42
if s=t then
each(a[i])
if a[i] mod s =0 then ans -
0@ 2008-11-11 11:31:07
扩大步长
-
0@ 2008-11-10 10:22:10
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
直接压路径,不用压的很小,能过就行了-_-||| 注意排序和S=T.
var
f,b:array[0..260000]of integer;
a:array[0..2500]of longint;
l,s,t,m,i,j,w:longint; ch:char;
begin
read(l,s,t,m);
for i:=1 to m do
read(a[i]);
w:=0;
if s=t then begin
for i:=1 to m do
if a[i] mod s=0 then inc(w);
write(w);
exit;
end;
for i:=1 to m do
for j:=i 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
if a[i]-a>2520 then
begin w:=a[i]-a-2520;
for j:=i to m do
a[j]:=a[j]-w;
end;
for i:=1 to m do b[a[i]]:=1;
l:=a[m]+10;
for i:=1 to l do
begin f[i]:=100;
for j:=s to t do
if (i-j>=0)and(f[i]>f+b[i]) then f[i]:=f+b[i];
end;
write(f[l]);
end. -
0@ 2008-11-08 09:26:42
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
先排序(nlogn),再压缩路径(m),最后dp。
注意单独处理s=t的情况
即:
procedure specialize;
begin
ans:=0;
for i:=1 to m do if od[i] mod t=0 then inc(ans);
writeln(ans);
halt;
end; -
0@ 2008-11-07 12:08:38
压缩没压好,WA了NN次啊……
-
0@ 2008-11-06 01:16:54
216 存取非法
为什么会有这样的提示?
必须使用压缩吗?
数组范围最大是多少?可以超过10^9吗? -
0@ 2008-11-05 22:39:51
压缩了。状态转移方程写错了。大牛讲一下
-
0@ 2008-11-05 21:33:18
我压缩了,DP了,特判了,可还有两个点超时!!!
-
0@ 2008-11-05 18:23:04
无语啊 数据居然是无序的
大家小心啊 -
0@ 2008-11-03 01:22:39
突然发现这么多人写题解
作为此号AC的第一道题,居然不是一次AC其实s=t的时候是可以dp的,完全没有问题
但s=t与路径压缩相矛盾了,所以要单独处理
就是说s=t时不能进行路径压缩,就直接mod求解就行了 -
0@ 2008-11-02 18:26:02
http://blog.sina.com.cn/s/blog_4a443fd701000aqj.html
这个题解很详细。
做了一天才明白 -
0@ 2008-11-02 18:21:16
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
晕哦,没考虑s=t,浪费我那么多时间,总算ac -
0@ 2008-11-02 11:14:57
var
var
l,s,t,i,j,n:longint;
temp,min:longint;
a:array[0..100] of longint;
f:array[0..253000] of longint;
begin
read(l);
read(s,t,n);
for i:=1 to n do
read(a[i]);
for i:=2 to n do
for j:=1 to i-1 do
if a[i]2520 then
a[i]:=a+(a[i]-a) mod 2520;
for i:=1 to n do
f[a[i]]:=1;
for i:=1 to s-1 do
f[i]:=maxlongint-100;
if l-a[n]>2520 then
l:=a[n]+(l-a[n]) mod 2520;
for i:=s to l do
begin
min:=maxlongint;
for j:=s to t do
if f -
0@ 2008-11-01 10:36:22
太不仔细了,
开始既没有考虑数据无序,
也没有考虑S=T这种特殊情况,
结果都没全过。要是2005年该我考就挂了...
-
0@ 2008-10-31 22:08:50
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms总算AC了
做了N年了 -
0@ 2008-10-31 20:10:13
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms终于过了!好高兴啊!
这题只需注意状态压缩 和s=t时的情况就行了 -
0@ 2008-10-29 23:33:22
10的9次方大的数据怎么开呃?开不开..- -\
-
0@ 2008-10-29 23:14:34
(Invalid img)O,YEAH!!!写好了简单的方程,我们就可以开始想那讨厌的状态压缩了....