题解

215 条题解

  • 0
    @ 2009-10-29 12:54:34

    //求出平均数 把逐个的数字与平均数相比,如果比平均数大 则减去平均数 把这个差植移

    //到后面这个数上 如果这个数字比平均数小的话 ,则加上数达到平均数, 把这个加到的数

    //用后一位的数想减,依次类推,直到完成,次数则是用了加减运算的才算一次。

    program vj1123;//均分纸牌

    var

    b,x,n,t,d:longint;

    a:array[1..100] of longint;

    begin

    readln(n);

    for x:=1 to n do

    begin

    read(a[x]);

    b:=b+a[x];

    end;

    b:=b div n;

    for x:=1 to n-1 do

    begin

    if a[x]b then

    if a[x]b then

    begin

    d:=a[x]-b;

    a[x]:=b;

    a[x+1]:=d+a[x+1];

    t:=t+1;

    end;

    end;

    write(t);

    end.

  • 0
    @ 2009-10-28 20:08:04

    测试数据不行哦!! 在vijos上

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

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

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

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

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

    在noi题库上只有50分!!

    program cmove;

    var i,j,m,n,step:integer;

    ave:longint;

    a:array[1..100]of longint;

    begin

    read(n);

    for i:=1 to n do

    begin

    read(a[i]);

    inc(ave,a[i]);

    end;

    ave:=ave div n;

    for i:=1 to n do

    a[i]:=a[i]-ave;

    for i:= 1 to n do

    if (a[i]0) then

    begin

    inc(a,a[i]);

    a[i]:=0;

    inc(step);

    end;

    writeln(step);

    end.

  • 0
    @ 2009-10-27 17:01:02

    水题...

    纯贪心...

    但是为什么贪心法则成立?

    ==========================^^^^^^^^^^^^^^^^^^^^===================

    #include

    int p[100]={0};

    int main()

    {

    int n;

    long int tot=0;

    long int y=0;

    int a;

    scanf("%d",&n);

    for(a=0;a

  • 0
    @ 2009-10-23 20:07:24

    water waterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwaterwater

    NOI

  • 0
    @ 2009-10-19 21:43:41

    就是贪心了

    但是为什么贪心法则成立?

  • 0
    @ 2009-10-14 22:41:21

    贪心的经典水题,不用去管正负~~~

    var

    n:longint;

    a:array[1..100] of longint;

    i,j,k,s,ans:longint;

    begin

    readln(n);

    s:=0;ans:=0;

    for i:=1 to n do begin read(a[i]);s:=s+a[i]; end;

    k:=s div n;

    for i:=1 to n-1 do

    if a[i]k then

    begin

    a:=a+a[i]-k;

    inc(ans);

    end;

    writeln(ans);

    end.

    30题小庆祝:)

  • 0
    @ 2009-10-12 13:55:48

    #include

    int main()

    {

    long int a[101]={0};

    int n,i,s=0,k=0;

    scanf("%d",&n);

    for(i=1;i

  • 0
    @ 2009-10-11 10:41:23

    编译通过...

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

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

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

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

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

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

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

    program p1123;

    var

    a,f:array[0..100]of longint;

    n,s,x,i,t,m:longint;

    begin

    readln(n);

    s:=0;

    for i:=1 to n do

    begin

    read(a[i]);

    inc(s,a[i]);

    end;

    x:=s div n;

    for i:=1 to n do

    begin

    if a[i]x then

    if in then

    begin

    t:=a[i]-x;

    a[i]:=x;

    a:=a+t;

    m:=m+1;

    end

    else begin

    t:=a[i]-x;

    a[i]:=x;

    a:=a+t;

    end;

    end;

    writeln(m);

    end.

  • 0
    @ 2009-10-10 19:39:59

    为什么

    Var

    n,s,t,i:longint;

    a:array[1..10000] of longint;

    Begin

    readln(n);

    for i:=1 to n do

    begin

    read(a[i]);

    s:=s+a[i];

    end;

    s:=s div n;

    for i:=2 to n do

    begin

    if as then

    begin

    a[i]:=a[i]+a-s;

    inc(t);

    end;

    end;

    writeLn(t);

    End.

    100 分



    Var

    n,s,t,i:longint;

    a:array[1..10000] of longint;

    Begin

    readln(n);

    for i:=1 to n do

    begin

    read(a[i]);

    s:=s+a[i];

    end;

    s:=s div n;

    for i:=1 to n-1 do

    begin

    if a[i]s then

    begin

    a:=a+a[i]-s;

    inc(t);

    end;

    end;

    writeln(t);

    End.

    只有 60 分????????????

  • 0
    @ 2009-10-08 21:50:43

    ⊙﹏⊙b汗

    一激动把1008的代码交上去了

    话说这题太水了……贪心,从前往后算次数,不管移的正负

  • 0
    @ 2009-10-04 23:59:36

    编译通过...

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

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

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

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

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

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

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

    #include

    using namespace std;

    int ans,a[101],tem,sum,n,s;

    int main()

    {

    cin>>n;

    for(int i=1;i>a[i];

    sum+=a[i];

    }

    tem=sum/n;

    for(int i=1;i

  • 0
    @ 2009-10-04 22:02:54

    稍一分析,发现,好水!

  • 0
    @ 2009-09-22 13:09:44

    var a:array[1..100] of integer;

    p,s:longint;

    i,j,n:integer;

    m,t:integer;

    begin

    readln(n);

    for i:=1 to n do begin

    read(a[i]);

    s:=s+a[i];

    end;

    p:=s div n;

    for i:=1 to n do

    begin

    if a[i]p then

    if in then begin t:=a[i]-p;a[i]:=p;a:=a+t;m:=m+1;end

    else begin t:=a[i]-p;a[i]:=p;a:=a+t;end;

    end;

    writeln(m);

    end.

  • 0
    @ 2009-09-18 21:07:10

    还没有理解到方法的看这边

    有讲解

    程序可读性比较强

    http://wwzhwdwd.blog.163.com/blog/static/12815145020098189526123

  • 0
    @ 2009-09-18 14:17:26

    注意是定义是长整形…………其他就没啥了……

  • 0
    @ 2009-09-17 15:15:21

    ...ri

    把read写成readln了...

  • 0
    @ 2009-09-17 11:35:49

    编译通过...

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

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

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

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

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

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

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

    program ex;

    var

    a:array[1..100]of longint;

    i,tot,n,ans:longint;

    begin

    readln(n);

    for i:=1 to n do

    begin read(a[i]);tot:=tot+a[i];end;

    tot:=tot div n;

    if a[n]tot then begin a[n-1]:=a[n-1]-(tot-a[n]);a[n]:=tot;ans:=ans+1;end;

    for i:=1 to n-2 do

    if a[i]tot then begin a:=a-(tot-a[i]);a[i]:=tot;ans:=ans+1;end;

    write(ans);end.

  • 0
    @ 2009-09-12 13:43:16

    编译通过...

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

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

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

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

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

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

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

    var

    a:array[1..100] of longint;

    n,m,i,j,tot,tt:longint;

    begin

    readln(n);

    for i:=1 to n do begin read(a[i]); tot:=tot+a[i]; end;

    tot:=tot div n;

    for i:=1 to n do

    begin

    if (a[i]-tot)0 then begin

    if (a[i]-tot)>0 then

    a:=a+a[i]-tot;

    if (a[i]-tot)

  • 0
    @ 2009-09-10 17:58:08

    var

    i,t,n,w:longint;

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

    begin

    read(n);

    for i:=1 to n do

    begin

    read(a[i]);

    inc(w,a[i])

    end;

    w:=w div n;

    for i:=2 to n do

    if aw then

    begin

    inc(a[i],a-w);

    inc(t)

    end;

    writeln(t)

    end.

    多美丽的程序!!!

  • 0
    @ 2009-09-05 18:37:29

    水得不能再水的题!

信息

ID
1123
难度
3
分类
贪心 点击显示
标签
递交数
8349
已通过
4221
通过率
51%
被复制
26
上传者