535 条题解
-
0唐齐 LV 8 @ 2009-07-28 15:41:21
var a,b:array[1..50000]of longint;
aq,ap,bq,bp,i,j,k,n,m,s:longint;
procedure qsort(left,right:longint);
var i , j , x , t:longint;
begin
i:=left; j:=right; x:=a[(left+right) div 2];
repeat
while a[i]x do dec(j);
if ij;
if ileft then qsort(left,j);
end;
procedure ini;
begin
readln(n);
for i:=1 to n do read(a[i]);
end;
procedure process;
begin
b[1]:=a[1]+a[2]; inc(s,b[1]); aq:=3; bq:=1; ap:=n; bp:=1;
while aq -
02009-07-28 08:53:47@
const maxn=1000000;
var
a:array[1..maxn] of longint;
n,s:longint;Procedure heapup(i:longint);
var
tmp,x:longint;
begin
x:=i;tmp:=a[x];
while x>1 do
if a[x div 2]>tmp then begin
a[x]:=a[x div 2];
x:=x div 2;
end else break;
a[x]:=tmp;
end;Procedure heapdown(i:longint);
var tmp,p,x:longint;
begin
x:=i; tmp:=a[x]; p:=x*2;while pa[p+1]) and (p+1a[p]) and (p
-
02009-07-27 15:41:08@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar i,n,w:longint; a:array[0..10002]of longint;
q1,q2:array[0..10002]of longint;
l1,r1,l2,r2:longint;
procedure qsort(l,r:longint);
var i,j,x,t:longint;
begin
i:=l; j:=r; x:=q1[trunc((l+r)/2)];
repeat
while q1[i]x do dec(j);
if ij;
if l -
02009-07-27 09:31:57@
program cc(input,output);
var
a:array[1..10001] of longint;
m,n,i:longint;
k,tem:longint;
begin
read(n);
for i:=1 to n do
read(a[i]);for i:=1 to n-1 do
for k:=i+1 to n doif a[i]a[k-1]) and(k>1) do
begin
m:=a[k];
a[k]:=a[k-1];
a[k-1]:=m;
k:=k-1;
end;
end;
tem:=tem+a[1]+a[2];
write(tem);
end. -
02009-07-27 09:30:04@
var a:array[0..10001]of longint;
b,c,d,e,f:longint;
begin
read(b);
for c:=1 to b do
read(a[c]);
for c:=1 to b-1 do
for d:=c+1 to b do
if a[c]a[d-1])and(d>1) do
begin
e:=a[d];
a[d]:=a[d-1];
a[d-1]:=e;
d:=d-1;
end;
end;
write(f);
end. -
02009-07-27 08:59:59@
var
a:array[0..10001] of longint;
b,c,d,e,f:longint;
begin
read(b);
for c:=1 to b do
read(a[c]);
for c:=1 to b-1 do
for d:=c+1 to b do
if a[c]a[d-1]) and (d>1) do
begin
e:=a[d];
a[d]:=a[d-1];
a[d-1]:=e;
d:=d-1;
end;
end;
write(f);
end. -
02009-07-26 21:58:53@
好恶心,数据为什么要开到20000
-
02009-07-26 12:21:18@
program da;
var i,j,n,t,total:integer;
a:array[1..100]of integer;
begin
read(n);total:=0;
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do
begin
for j:=i+1 to n do
if a[i]>a[j] then begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
end;
for i:=2 to n do
begin
a[1]:=a[i]+a[1];
total:=total+a[1];
end;
write(total);
end. -
02009-07-25 10:30:28@
堆优化0msAC……
-
02009-07-26 16:06:44@
怎么通过率这么低呢...很简单
快排+插排=AC,不过没秒编译通过...
├ 测试数据 01:答案正确... 291ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 353ms
├ 测试数据 08:答案正确... 275ms
├ 测试数据 09:答案正确... 338ms
├ 测试数据 10:答案正确... 275ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1532msvar a,n,max:longint;
s:array[1..20000] of longint;
rs,tmp:longint;procedure huan(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end;procedure qsort(l,r:integer);
var il,ir,m:integer;
begin
il:=l;
ir:=r;
m:=s[(il+ir) div 2];
while il -
02009-07-24 11:19:38@
program ayqzwu110;
type point=^node;
node=record
data:longint;
next:point;
end;
var
p,q,w,head:point;
n,k,o,i,j:longint;
a:array[1..10000]of integer;
begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n-1 do
begin
o:=0;
for j:=i+1 to n do
if a[j]>o then begin o:=a[j]; k:=j; end;
if o>a[i] then begin a[k]:=a[i];a[i]:=o; end;
end;
for i:=1 to n do
begin
new(p);
p^.data:=a[n-i+1];
if i=1 then head:=p else w^.next:=p;
w:=p;
end;
o:=0;
for i:=1 to n do
begin
p:=head;
w:=head^.next;
if w=nil then break;
p^.data:=p^.data+w^.data;
inc(o,p^.data);
p^.next:=w^.next;
w:=p^.next;
if w=nil then break;
if w^.data=p^.data) then begin q^.next:=p;p^.next:=w; break; end;
q:=w;
w:=w^.next;
end;
end;
end;
writeln(o);
end.
七中的帅哥写的 -
02009-07-24 10:57:03@
program P1097;
type point=^node;
node=record
data:longint;
next:point;
end;
var
p,q,w,head:point;
n,k,o,i,j:longint;
a:array[1..10000]of integer;
begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n-1 do
begin
o:=0;
for j:=i+1 to n do
if a[j]>o then begin o:=a[j]; k:=j; end;
if o>a[i] then begin a[k]:=a[i];a[i]:=o; end;
end;
for i:=1 to n do
begin
new(p);
p^.data:=a[n-i+1];
if i=1 then head:=p else w^.next:=p;
w:=p;
end;
o:=0;
for i:=1 to n do
begin
p:=head;
w:=head^.next;
if w=nil then break;
p^.data:=p^.data+w^.data;
inc(o,p^.data);
p^.next:=w^.next;
w:=p^.next;
if w=nil then break;
if w^.data=p^.data) then begin q^.next:=p;p^.next:=w; break; end;
q:=w;
w:=w^.next;
end;
end;
end;
writeln(o);
end. -
02009-07-24 10:56:11@
var
n,i,j,sum,k,h,min:longint;
flag:integer;
a,b:array[1..10002]of longint;
procedure qsort(l,r:integer);
var i,j,temp,mid:integer;
begin
i:=l;j:=r;
mid:=a[(r+l)div 2];
repeat
while a[i]mid do j:=j-1;
if ij;if il then qsort(l,j);
end;begin
readln(n);for i:=1 to 10000 do
begin
a[i]:=12345678;
b[i]:=12345678;
end;
for j:=1 to n do
read(a[j]);
qsort(1,n);
i:=1;j:=1;sum:=0;h:=0;
for k:=1 to n-1 do
begin
min:=maxlongint;
if (a[i]+a -
02009-07-23 15:38:50@
编译通过...
├ 测试数据 01:答案正确... 228ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 119ms
├ 测试数据 08:答案正确... 244ms
├ 测试数据 09:答案正确... 150ms
├ 测试数据 10:答案正确... 259ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1000ms
快排+双向链表……超成这样
不过一次AC,爽 -
02009-07-23 11:39:25@
program hh4742;
type point=^node;
node=record
data:longint;
next:point;
end;
var
p,q,w,head:point;
n,k,o,i,j:longint;
a:array[1..10000]of integer;
begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n-1 do
begin
o:=0;
for j:=i+1 to n do
if a[j]>o then begin o:=a[j]; k:=j; end;
if o>a[i] then begin a[k]:=a[i];a[i]:=o; end;
end;
for i:=1 to n do
begin
new(p);
p^.data:=a[n-i+1];
if i=1 then head:=p else w^.next:=p;
w:=p;
end;
o:=0;
for i:=1 to n do
begin
p:=head;
w:=head^.next;
if w=nil then break;
p^.data:=p^.data+w^.data;
inc(o,p^.data);
p^.next:=w^.next;
w:=p^.next;
if w=nil then break;
if w^.data=p^.data) then begin q^.next:=p;p^.next:=w; break; end;
q:=w;
w:=w^.next;
end;
end;
end;
writeln(o);
end. -
02009-07-22 17:57:41@
编译通过...
├ 测试数据 01:答案正确... 338ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 9ms
├ 测试数据 07:答案正确... 353ms
├ 测试数据 08:答案正确... 338ms
├ 测试数据 09:答案正确... 338ms
├ 测试数据 10:答案正确... 353ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1729ms
堆操作。。。
以前用自己写的堆,狂不过,现在用老师改进版过了,管他秒不秒 -
02009-07-21 20:43:44@
只用堆排就可以秒杀
用快排加插排要注意处理,不要来堆栈溢出之类的东西,开数组不要吝啬
我用快排的时候成功地把通过率刷了下来,人品啊
还是看见这个开心:
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-07-21 16:51:54@
恶心一下。
故意没用堆排……
然后尝试了若干恶心方法:数组模拟链表+快排=AC
基数排序=AC -
02009-07-19 22:43:20@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
堆排+贪心=秒杀 -
02009-07-19 01:07:05@
编译通过...
├ 测试数据 01:答案正确... 430ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 40ms
├ 测试数据 07:答案正确... 228ms
├ 测试数据 08:答案正确... 446ms
├ 测试数据 09:答案正确... 212ms
├ 测试数据 10:答案正确... 399ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1755ms担心快排会超时,所以用了比较劲爆的排序:
开一个数组a,对于数据i,a[i]:=a[i]+1;
比如:
3
2 1 9
此时a数组的情况为
下标 1 2 3 4 5 6 7 8 9
数值 1 1 0 0 0 0 0 0 1
明白了吧,用空间换时间!