95 条题解
-
0JackDavid127 LV 10 @ 2009-03-23 20:56:51
压位高精就是快……
我先前压五位,错两个点,发现循环时变量没自加,改过来,有一个点内存溢出,把数组开大,两个点溢出。无奈,改成压八位,AC……
-
02009-03-23 19:45:01@
编译通过...
├ 测试数据 01:答案正确... 72ms
├ 测试数据 02:答案正确... 56ms
├ 测试数据 03:答案正确... 72ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:200ms貌似用结构体写的高精度会比较慢..
-
02009-02-14 16:44:41@
显然是先算好 O(N)输出 的
我竟然脑残的对每个N求了一次
怪不得无限超时.. -
02009-02-05 20:47:45@
由于2k+1和2k的方案数相同,因此我们用f[k]表示2k+1和2k的方案数。则:
f[k]=f[k-1]+f[k div 2]
然后在用高精度计算即可。要用9位压缩……
纪念我的第500次提交,第248题AC。
附上Vijos Dolphin评测记录:编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 25ms
├ 测试数据 03:答案正确... 25ms看来这个算法很快了……
-
02009-02-05 16:24:53@
while ans[k]=0 do dec(k);
write(ans[k]);
for i:=k-1 downto 1 do
if ans[i] -
02008-11-13 14:57:16@
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:778ms
---|---|---|---|---|---|---|---|-
Remember:
1.内存只能开1500000的longint.
2.不止一组数据.
3.先做再输.
4......不要放弃啊 -
02008-11-13 14:51:13@
├ 测试数据 01:运行超时|格式错误...
├ 测试数据 02:运行超时|格式错误...
├ 测试数据 03:运行超时|格式错误...
---|---|---|---|---|---|---|---|---|---|---|-
改了好长时间,现在才发现居然不止一组测试数据
---|---|---|---|---|---|---|---|---|---|---|-编译通过...
├ 测试数据 01:内存溢出...
├ 测试数据 02:内存溢出...
├ 测试数据 03:内存溢出...
---|---|---|---|---|---|---|---|---|---|---|-
居然如此整齐的内存益出.
编译通过...
├ 测试数据 01:答案正确... 134ms
├ 测试数据 02:答案正确... 134ms
├ 测试数据 03:答案正确... 103ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:371ms -
02008-10-28 21:54:24@
无语了 压缩了还超`
\
program p1136;
{online}
var
k,w,n,l1,l2,i,j,x,y:longint;
a,b:array[1..100] of longint;
p:ansistring;
function add(s1,s2:ansistring):string;{inline}
begin
add:='';
l1:=length(s1);
l2:=length(s2);
x:=1;
while (l1>8) do begin
p:=copy(s1,l1-7,8);
val(p,a[x],w);
l1:=l1-8;
inc(x);
end;
p:=copy(s1,1,l1);
val(p,a[x],w);
y:=1;
while (l2>8) do begin
p:=copy(s2,l2-7,8);
val(p,b[y],w);
l2:=l2-8;
inc(y);
end;
p:=copy(s2,1,l2);
val(p,b[y],w);
if x0 then begin
str(w,p);
add:=p+add;
end;
j:=1;
while (add[j]='0') do inc(j);
add:=copy(add,j,length(add)-j+1);
end;
function f(t:longint):ansistring;{inline}
begin
if (t=0) or (t=1) then exit('1');
if t and 1=0 then f:=add(f(t-1),f(t shr 1))
else f:=f(t-1);
end;
begin
while not(eoln) do begin
readln(n);
writeln(f(n));
end;
end. -
02008-10-01 20:09:07@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 88ms
├ 测试数据 03:答案正确... 56ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:144ms
好慢...没法秒杀[没魔了,打不出暗影突袭]=.= -
02008-09-30 17:43:20@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 72ms
├ 测试数据 03:答案正确... 41ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:113ms不快不慢。数组太大在debug时单步执行要费老长时间。
-
02008-09-30 14:56:49@
不要忘了f[0].........
-
02008-09-18 17:20:19@
编译通过...
├ 测试数据 01:答案正确... 166ms
├ 测试数据 02:答案正确... 181ms
├ 测试数据 03:答案正确... 181ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:528ms我的怎么就慢一些。。。。
-
02008-09-17 23:13:33@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 41ms
├ 测试数据 03:答案正确... 41ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:82msprogram vijos1136;
//---|---|---|---|---|---|---|---|---|---|---|--
type
arr=array[0..6]of longint;
const
nmax=3000000;
max=1000000000;
var
f:array[0..nmax shr 1]of arr;
n,i,j,now,len:longint;
s:string;
//---|---|---|---|---|---|---|---|---|---|---|--
function getmax(a,b:longint):longint;
begin
if a>=b then exit(a);
exit(b);
end;
//---|---|---|---|---|---|---|---|---|---|---|--
procedure calc(var a:arr; b,c:arr);
var
i,jw,x:longint;
begin
jw:=0;
for i:=1 to getmax(b[0],c[0]) do begin
x:=b[i]+c[i]+jw;
jw:=x div max;
a[i]:=x mod max;
end;
a[0]:=i;
if jw0 then begin
a:=jw; inc(a[0]);
end;
end;
//---|---|---|---|---|---|---|---|---|---|---|--
begin
f[0,1]:=1;
f[0,0]:=1;
now:=0;
while not eof do begin
readln(n);
n:=n shr 1;
if n>now then begin
for i:=now+1 to n do
calc(f[i],f,f[i shr 1]);
now:=n;
end;
len:=f[n,0];
for i:=len downto 1 do begin
if f[n,i]0 then begin
str(f[n,i],s);
if (length(s) -
02008-09-17 23:10:44@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 88ms
├ 测试数据 03:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:88ms -
02008-09-02 13:21:14@
├ 测试数据 01:答案正确... 431ms
├ 测试数据 02:答案正确... 447ms
├ 测试数据 03:答案正确... 291ms教训啊!!!高精度一定要longint!!
只存偶数,f[i]:=f+f[i shr 1],1
-
02008-08-07 14:30:57@
编译通过...
├ 测试数据 01:答案正确... 56ms
├ 测试数据 02:答案正确... 103ms
├ 测试数据 03:答案正确... 88ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:247ms
这是PUPPY
编译通过...
├ 测试数据 01:运行超时...
├ 测试数据 02:运行超时...
├ 测试数据 03:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:0 有效耗时:0ms
这是DOLPHIN
相同的程序,差距怎么就这么大呢? -
02008-07-22 19:46:01@
把住高楼的同志的语录编辑了一下:
很险的一个高精度,要9压位,逢10亿进位时不要用一个变量转接,最好是加
上前一个div 1000000000而不是在前一步时用某个变量假如
e:=。。div 1000000000,这样要多耗费时间,还有方程变为
f[i]:=f+f[i div 2];这是原来奇偶都算进的方程,也是只算偶数时的
方程,最后输出f[n div 2]
注意有多个数据,否则格式错误,用while not eof do -
02007-12-21 17:59:38@
编译通过...
├ 测试数据 01:答案正确... 134ms
├ 测试数据 02:答案正确... 134ms
├ 测试数据 03:答案正确... 119ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:387ms我终于明白为什么
通过 94人
提交 1230次
通过率 8%
难度 2因为!"包含多个测试数据,每行是一个整数n(1
-
02007-11-21 14:04:29@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 25ms
├ 测试数据 03:答案正确... 88ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:113ms -
02007-10-24 14:27:28@
高精压位。最好压8~9位,预处理,空间反复利用。空间开销就是150万*6,然后就是离线算法的回答询问O(1)搞定。