333 条题解
-
0林立鹏 LV 7 @ 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 -
02009-09-16 19:20:00@
状态压缩DP。。
-
02009-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 -
02009-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大牛们学习。 -
02009-09-13 01:47:32@
恶心了我一晚上。。。原来最后一个点s=t数据又大
这时候不能压缩,也不能使下标越界。。。 -
02009-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 -
02009-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 -
02009-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了 -
02009-08-27 13:05:31@
神啊!~我终于AC了
(热泪盈眶) -
02009-08-25 20:04:41@
-
02009-08-25 15:18:52@
为什么要把s=t的情况单独处理?好像不单独处理就有2个点过不去
-
02009-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
^_^
终于搞定了 -
02009-08-19 22:08:14@
谁能告诉我第六个点为什么错误》》??
-
02009-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 -
02009-08-18 23:21:45@
小优化 加一个跳跃判断 AC
-
02009-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就够了。。。 -
02009-08-30 08:37:47@
-
02009-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 -
02009-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
#includeint 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 -
02009-08-07 21:52:42@
记得要排序
就是因为没排序害我WA