题解

535 条题解

  • 0
    @ 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

  • 0
    @ 2009-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

  • 0
    @ 2009-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 有效耗时:0ms

    var 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

  • 0
    @ 2009-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 do

    if 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.

  • 0
    @ 2009-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.

  • 0
    @ 2009-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.

  • 0
    @ 2009-07-26 21:58:53

    好恶心,数据为什么要开到20000

  • 0
    @ 2009-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.

  • 0
    @ 2009-07-25 10:30:28

    堆优化0msAC……

  • 0
    @ 2009-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 有效耗时:1532ms

    var 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

  • 0
    @ 2009-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.

    七中的帅哥写的

  • 0
    @ 2009-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.

  • 0
    @ 2009-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

  • 0
    @ 2009-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,爽

  • 0
    @ 2009-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.

  • 0
    @ 2009-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

    堆操作。。。

    以前用自己写的堆,狂不过,现在用老师改进版过了,管他秒不秒

  • 0
    @ 2009-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

  • 0
    @ 2009-07-21 16:51:54

    恶心一下。

    故意没用堆排……

    然后尝试了若干恶心方法:

    数组模拟链表+快排=AC

    基数排序=AC

  • 0
    @ 2009-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

    堆排+贪心=秒杀

  • 0
    @ 2009-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

    明白了吧,用空间换时间!

信息

ID
1097
难度
6
分类
贪心 点击显示
标签
递交数
23906
已通过
6330
通过率
26%
被复制
41
上传者