想了一个用桶排来做的程序 我把数组拿来滚动 但怎么也过不去

到底是什么错误????

program fruit;

var i,j,p,q,m,n,max,temp,tempn,k:longint;

a:array[0..10000000] of longint;

b:array[0..10000] of longint;

begin

readln(n);

for i:=1 to n do

begin

read(m);

inc(a[m]);

end;

q:=n-1;

p:=0;

temp:=2;

for k:=0 to 10 do

for i:=0 to 10000000 do

begin

if q=0 then break;

for j:=1 to a[i] do

begin

if temp0 then

begin

tempn:=tempn+i+k*10000000;

dec(temp);

dec(a[i]);

end;

if (temp=0) and (tempn>=10000000*(k+1)) then

begin

temp:=2;

dec(q);

inc(a[tempn mod 100]);

b[p]:=tempn;

tempn:=0;

inc(p);

break;

end;

if (temp=0) and (tempn

4 条评论

  • @ 2015-08-23 11:12:27

    优先队列大法好……

  • @ 2014-02-13 09:24:15

    同样
    var a:array[1..20000] of longint;
    b:array[1..10000] of longint;
    c:array[1..4] of longint;
    i,m,n,k,head,tail,ans,x:longint;
    procedure max;
    var i,j,temp:integer;
    begin
    if (c[1]>c[3]) then
    if (c[4]<c[1]) then begin inc(a[c[1]]);inc(a[c[2]]);end
    else begin inc(a[c[2]]);inc(head);end
    else
    if c[2]>c[3] then begin inc(a[c[2]]);inc(head);end;
    for i:=1 to 3 do
    for j:=i+1 to 4 do
    if c[i]>c[j] then begin temp:=c[i];c[i]:=c[j];c[j]:=temp;end;
    inc(tail);b[tail]:=c[1]+c[2];
    ans:=ans+c[1]+c[2];
    end;
    begin
    fillchar(a,sizeof(a),0);
    readln(n);
    for i:=1 to n do begin read(x);inc(a[x]);end;
    k:=1;head:=1;tail:=0;
    for i:=1 to 10000 do b[i]:=32767;
    for i:=1 to n-1 do
    begin
    fillchar(c,sizeof(c),0);
    m:=0;
    while m<2 do
    begin
    while (a[k]=0) and (k<20000) do inc(k);
    if k=20000 then
    if c[1]<>0 then begin inc(m);c[m]:=500000000;end
    else begin inc(m,2);c[1]:=500000000;c[2]:=500000000;end
    else inc(m);c[m]:=k;dec(a[k]);
    end;
    c[3]:=b[head];c[4]:=b[head+1];
    max;
    end;
    writeln(ans);
    end.

  • @ 2012-11-03 19:52:54

    同上

    ├ 测试数据 01:答案错误... (0ms, 308KB)

    ├ 测试数据 02:答案正确... (0ms, 308KB)

    ├ 测试数据 03:答案错误... (0ms, 308KB)

    ├ 测试数据 04:答案错误... (0ms, 304KB)

    ├ 测试数据 05:运行时错误... (0ms, 308KB)

    读取访问违规, 地址: 0x0000474f

    ├ 测试数据 06:答案错误... (0ms, 308KB)

    ├ 测试数据 07:答案错误... (0ms, 308KB)

    ├ 测试数据 08:答案错误... (0ms, 308KB)

    ├ 测试数据 09:答案错误... (0ms, 304KB)

    ├ 测试数据 10:答案错误... (0ms, 308KB)

    ---|---|---|---|---|---|---|---|-

    Unaccepted / 10 / 0ms / 308KB

    view sourceprint?01 #include

    02 #include

    03 #include

    04 #include

    05

    06 using namespace std;

    07

    08 int f[10010];

    09 int main()

    10 {

    11 int n;

    12 scanf("%d",&n);

    13 memset(f,0,sizeof(f));

    14 for (int i=1;i

  • @ 2009-08-22 20:43:10

    英雄所见略同

    本来想桶排,然后简单循环乘法

    得了十分

    ├ 测试数据 01:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 04:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 05:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 06:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 07:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 08:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 09:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 10:答案错误... ├ 标准行输出

     ├ 错误行输出

  • 1

信息

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