106 条题解

  • 0
    @ 2015-04-20 20:29:36

    program P1282;
    var data:array[1..50000,1..2] of longint;
    e:array[1..10] of longint;
    n,k,i,j:longint;
    procedure change(var x,y:longint);
    var t:longint;
    begin
    t:=x; x:=y; y:=t;
    end;

    procedure qsort(l,r:longint);
    var mid,a,b,i:longint;
    begin
    mid:=data[(l+r) div 2,2]; a:=l; b:=r;
    i:=data[(l+r) div 2,1];
    repeat
    while (data[a,2]>mid) or ((data[a,2]=mid) and (data[a,1]<i)) do inc(a);
    while (data[b,2]<mid) or ((data[b,2]=mid) and (data[b,1]>i)) do dec(b);
    if a<=b then
    begin
    change(data[a,2],data[b,2]);
    change(data[a,1],data[b,1]);
    inc(a); dec(b);
    end;
    until a>b;
    if l<b then qsort(l,b);
    if a<r then qsort(a,r);
    end;

    begin //main
    read(n,k); fillchar(data,sizeof(data),0);
    for i:=1 to 10 do read(e[i]);
    for i:=1 to n do read(data[i,2]);
    for i:=1 to n do data[i,1]:=i;
    qsort(1,n);
    for i:=1 to n do
    data[i,2]:=data[i,2]+e[((i-1) mod 10)+1];
    qsort(1,n);
    for i:=1 to k do
    write(data[i,1],' ');

    end.

  • 0
    @ 2015-04-20 20:13:33

    我去,为什么我的快排必须的重复排2次才能实现按W排,然后再按编号排序啊???有时候多个相同W的时候不能做到编号小的在前面?为什么?

    比如2 5 16号都是一样的W,它常常不能排成2 5 16,我再快排一次才行。怎么会这样???

    • @ 2015-04-20 20:29:04

      诶,怪了,我弄了个i=data[(l+r) div 2,1],替换掉了原句的data[(l+r) div 2,1]结果就对了,为什么?

    • @ 2015-04-20 20:39:55

      原来repeat里面l+r div 2 的值会变化。导致快排出错。诶- -算是吃一堑长一智

  • 0
    @ 2015-04-20 15:33:03

    这题太lou了,题目都错的
    什么叫 然后将初始权值从大到小进行排序,每人就有了一个序号D[i](取值同样是1--n)???
    明显题目要求是直接排序,按排序编号。
    但是实际确实按读入顺序标号。 算的时候按排序计算!!!

    这明显是阴人,搞不明白为什么第一次写了然后改的程序是错的。醉了

  • 0
    @ 2015-03-01 10:34:58

    program exam1282;
    var a,c,w,e:array[1..50000]of longint;
    j,i,s,t,r,m,n,k:longint;
    procedure js(l,r:longint);
    var i,j,m,p,m2:longint;
    begin
    i:=l;j:=r; m:=w[(l+r)div 2];
    m2:=a[(l+r)div 2];
    repeat
    while (w[i]>m)or((w[i]=m)and(a[i]<m2)) do inc(i);
    while (w[j]<m)or((w[j]=m)and(a[j]>m2)) do dec(j);
    if i<=j then
    begin
    p:=w[i];w[i]:=w[j];w[j]:=p;
    p:=a[i];a[i]:=a[j];a[j]:=p;
    inc(i);dec(j);
    end;
    until i>j;
    if l<j then js(l,j);
    if i<r then js(i,r);
    end;
    begin
    readln(m,k);
    if k=0 then exit;
    for i:=1 to 10 do read(e[i]);
    for i:=1 to m do read(w[i]);
    for i:=1 to m do a[i]:=i;
    js(1,m);
    for i:=1 to m do c[i]:=(i-1)mod 10 +1;
    for i:=1 to m do w[i]:=w[i]+e[c[i]];
    js(1,m);
    for i:=1 to k do write(a[i],' ');
    end.

    低调,低调!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • 0
    @ 2014-08-03 21:08:21

    #5 k=0::>_<::

    记录信息
    评测状态 Accepted
    题目 P1282 佳佳的魔法照片
    递交时间 2014-08-03 21:06:15
    代码语言 C++
    评测机 VijosEx
    消耗时间 950 ms
    消耗内存 632 KiB
    评测时间 2014-08-03 21:06:21
    评测结果
    编译成功

    测试数据 #0: Accepted, time = 0 ms, mem = 268 KiB, score = 10
    测试数据 #1: Accepted, time = 0 ms, mem = 272 KiB, score = 10
    测试数据 #2: Accepted, time = 0 ms, mem = 272 KiB, score = 10
    测试数据 #3: Accepted, time = 0 ms, mem = 272 KiB, score = 10
    测试数据 #4: Accepted, time = 0 ms, mem = 272 KiB, score = 10
    测试数据 #5: Accepted, time = 140 ms, mem = 480 KiB, score = 10
    测试数据 #6: Accepted, time = 156 ms, mem = 520 KiB, score = 10
    测试数据 #7: Accepted, time = 187 ms, mem = 564 KiB, score = 10
    测试数据 #8: Accepted, time = 218 ms, mem = 592 KiB, score = 10
    测试数据 #9: Accepted, time = 249 ms, mem = 632 KiB, score = 10
    Accepted, time = 950 ms, mem = 632 KiB, score = 100

  • 0
    @ 2013-10-04 09:46:53

    1.这道题描述的像大便,编号序号说的也不清楚
    2.第五个点不知道为何用意

    坑人的NC题,一点意思也没

  • 0
    @ 2012-10-05 14:54:54

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    Accepted / 100 / 0ms / 1752KB

    AC率什么的都是浮云……

    手动测了N遍,各种错误:什么交换错误出了一串5;什么排序错误成了从小到大;什么计算错误d[i]c[i];什么范围错误把范围开到0;什么存取非法我连文件都没用不就是死循环么?快要交了随便编了个e[i]全是0的数据居然错掉了,改来改去弄好了交上去20WA,再一看改的时候把输出空格去掉了……怎么还能过两个点……

    同志们,此题目水,此题描述繁琐,此题范围缺失,此题纯粹阴人,看看右侧边栏上的通过率,就不用担心你的AC率了……

  • 0
    @ 2012-08-27 13:20:21

    NC题

  • 0
    @ 2009-10-29 18:48:14

    Accepted 有效得分:100 有效耗时:0ms

    水题……开了500000的数组以防万一……

  • 0
    @ 2009-10-23 19:15:52

    没范围的阴人的水题。。。真没意思

  • 0
    @ 2009-10-23 08:05:36

    快排多次就OK了

    type r=record

    w,xu:longint;

    end;

    var a:array[1..100000] of r;

    e:array[1..10]of longint;

    i,j,k,ls,n,m:longint;

    procedure sort(left,right:longint);

    var i,j,x:longint;

    y:r;

    begin

    i:=left; j:=right; x:=a[(left*2+right) div 3].w;

    repeat

    while a[i].wx do dec(j);

    if ij;

    if left

  • 0
    @ 2009-10-20 11:05:03

    "定义每个人的类别序号C[i]的值为(D[i]-1) mod 10 +1"

    什么D[i],就是i啊

    这里没搞清wa了5遍

  • 0
    @ 2009-10-05 20:30:43

    第5个点错误...

    ├ 测试数据 05:答案错误... 

    ├ 标准行输出 ...15 7 61...

     ├ 错误行输出 ...15 92 6...

    "92"怎么出来的?

    排序时考虑了编号小的在前面的问题

    帮忙解决下,谢谢...

  • 0
    @ 2009-09-21 16:58:42

    好吧 我承认我又沙茶了........

    快排写错了.....改了N多回.....

    就是一个多关键字快排......

  • 0
    @ 2009-09-08 07:37:36

    编译通过...

    ├ 测试数据 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-09-06 09:07:26

    无视AC率吧..

  • 0
    @ 2009-08-30 00:14:15

    就是多级快排……

    交了N次都WA,逼不得已动用马甲了。

    后来发现找中间量的时候我只是把位置(l+r) div 2记下来,而不是把值记下来,这样递归的时候值变掉了,快排就出错了…………………………

    血训啊!

  • 0
    @ 2009-08-28 22:54:10

    交了15遍才过,AC率from51%to48%,T T

    贴个程序吧,免得大家都像我一样,实在不会可以抄一下,或向我请教。

    var e:array[1..10] of longint;

    w,d:array[1..50000] of longint;

    i,m,n,j:longint;

    procedure ss(x,y:longint);

    var ii,jj,s,o,aa:longint;

    begin

    ii:=x;jj:=y;

    s:=w[(x+y) shr 1];

    aa:=d[(x+y) shr 1];

    repeat

    while (w[ii]>s) or ((w[ii]=s) and (d[ii]

  • 0
    @ 2009-08-21 22:36:48

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    Accepted 有效得分:100 有效耗时:0ms

    第5组 k=0 阴人

  • 0
    @ 2009-08-20 13:57:29

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    Accepted 有效得分:100 有效耗时:0ms

    强烈bs这种阴人的水题!!!

    为什么不给数据范围!!!

    数组范围是50000,搞得我提交了好几次才过!!!

    数据范围是Longint,不用int64!!!

    k居然可以为0!!!

    我总算知道这题通过率咋这么低了!!!!!!

信息

ID
1282
难度
6
分类
其他 | 排序 点击显示
标签
递交数
3784
已通过
988
通过率
26%
被复制
6
上传者