题解

215 条题解

  • 0
    @ 2008-11-10 08:25:17

    编译通过...

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

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

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

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

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

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

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

    说实话。。。第一遍还是蒙了。。

  • 0
    @ 2008-11-09 11:39:59

    编译通过...

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

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

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

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

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

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

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

    如下做法,好水的题啊...可以预见一堆牌若不等于平均数,则只有向两边扔,它不能隔着几推牌扔,所以就I:=1---|>N-1 去推出 答案就好了

  • 0
    @ 2008-11-08 15:20:18

    {一看思路不简单,但是编起来才知道程序是那样的水}

    var

    i,j,m,s,n:longint;

    a:array[0..1000] of longint;{integer害我通过率}

    begin

    readln(n);

    m:=0; s:=0;

    for i:=1 to n do begin read(a[i]); m:=m+a[i]; end;{求总数}

    readln;

    m:=m div n;{求平均数}

    for i:=1 to n-1 do

    if a[i]m then begin a:=a+a[i]-m; inc(s); end;{分发}

    writeln(s);

    end.{这水题还是题吗}

  • 0
    @ 2008-11-08 09:37:25

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

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

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

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

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

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

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

    一次AC

    这题根本不用模拟

    先求出每个与平均值的差

    比如9 8 17 6的就是

    -1 -2 7 -4

    接下来对于每堆要往左送出去的数

    对于每个点,它的这个数等于它本身与平均值的差,加上右边一个点送出去的数

    比如-1 -2 7 -4的就是

    0 1 3 -4

    表示第四堆要往左收4个,第三堆要往左送3个,第二堆要往左送1个,第一堆要往左送0个

    显然统计不为0的数的个数即可

    楼下litong讲的

    计算出平均值,从左往右判断,不够平均值的从右边拿,次数+1;超过平均值的往右边放,次数+1

    不正确

    比如10 8 12 10只有一次移动

    不过这题数据很弱很弱……居然没有出到这样的数据阴人

    贴下我的代码

    #include

    int main(void)

    {

    long i,n,total=0,cont=0;

    scanf("%ld" , &n);

    int* num = new int[n + 5];

    i = n;

    do {scanf("%d" , &num[i]);total+=num[i];} while(--i);

    total /= n;

    i = n;

    do {num[i]-=total;} while(--i);

    i = n - 1;

    if(num[n]) ++cont;

    do {num[i]+=num;if(num[i]) ++cont;} while(--i);

    printf("%ld" , cont);

    return 0;

    }

  • 0
    @ 2008-11-07 23:25:04

    这题好难啊!!!不是一般的难!

    想要代码,还是快给吧。。。

  • 0
    @ 2008-11-06 11:58:03

    #include

    using namespace std;

    int main()

    {

    int n,a[10001],i;

    cin>>n;

    a[0]=0;

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

    a[0]+=a[i];

    }

    a[0]/=n;

    for (i=1;i

  • 0
    @ 2008-11-06 10:23:29

    谁来证明,为什么可以直接往右边取差值是最优步骤?

    我当初想的是拿最大值分给最小值,重复以上步骤,,才拿20分

    。。没状态,题目不认真看

  • 0
    @ 2008-11-06 10:16:52

    #include

    #include

    int b,sum,i,k,n;

    int a[120];

    int main()

    {

    scanf("%d",&n);

    for(i = 1; i

  • 0
    @ 2008-11-28 16:44:04

    编译通过...

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

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

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

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

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

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

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

    var

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

    i,m,s,n,j:longint;

    BEGIN

    readln(m);

    s:=0;

    for i:= 1 to m do

    begin

    read(a[i]);

    s:=s+a[i];

    end;

    n := s div m ;

    for i:= 1 to m do

    b[i]:=n;

    j:=0;

    for i:= 1 to m-1 do

    begin

    if a[i] > b[i] then b := b - ( a[i] - b[i] ) ;

    if a[i] < b[i] then b := b + b[i] - a[i] ;

    if a[i] b[i] then inc(j);

    end;

    writeln(j);

    readln;

    readln;

    END.

    标准的动规

  • 0
    @ 2008-11-03 22:28:56

    ....我怎么就米看出来这题这么简单呢..想复杂了...哎..

  • 0
    @ 2008-10-31 19:43:00

    这题好水啊!!!不是一般的水!

    想写出代码的,还是算了吧。。。

  • 0
    @ 2008-10-29 21:12:38

    var

    y,b,sum,i,n:longint;

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

    begin

    sum:=0;

    readln(n);

    for i:=1 to n do

    begin

     read(a[i]);

     sum:=sum+a[i];

        end;

       sum:=sum div n;

        y:=0;

       for i:=1 to n do

         if a[i] sum then

        begin

         b:=sum-a[i];

         a[i]:=a[i]+b;

         a:=a-b;

         inc (y);

         end;

    writeln(y);

    end.

  • 0
    @ 2008-10-29 21:02:01

    编译通过...

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

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

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

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

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

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

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

    var b,sum,i,k,n:longint;

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

    begin

    sum:=0;

    readln(n);

    for i:=1 to n do

    begin

    read(a[i]);

    sum:=sum+a[i];

    end;

    sum:=sum div n;

    k:=0;

    for i:=1 to n do

    if a[i] sum then

    begin

    b:=sum-a[i];

    a[i]:=a[i]+b;

    a:=a-b;

    inc (k);

    end;

    writeln(k);

    end.

    水啊!

  • 0
    @ 2008-10-28 20:43:39

    #include

    using namespace std;

    long int s[100]={0},a[100]={0};

    main()

    {

    int i,n;

    cin>>n;

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

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

    }

    int k=s[n]/n,j=0;

    for (i=1;i

  • 0
    @ 2008-10-26 16:36:34

    遍历一遍数组就行了.

    N=平均数 跳过

    N平均数 调整后继值,次数+1.

  • 0
    @ 2008-10-22 23:20:24

    编译通过...

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

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

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

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

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

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

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

    水啊啊啊啊啊。。。一次编译。。一次AC。。要多水有多水。。

  • 0
    @ 2008-10-22 19:40:24

    var b,sum,n,i,tot:longint;

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

    begin

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

    sum:=sum div n;tot:=0;

    for i:=1 to n do

    if a[i]sum then

    begin

    b:=sum-a[i];

    a[i]:=a[i]+b;

    a:=a-b;

    inc(tot);

    end;

    writeln(tot);

    end.

    水题呀水题

  • 0
    @ 2008-10-21 19:52:57

    编译通过...

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

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

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

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

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

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

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

    数学题- -完全是数学题- -

    固定最后一个点然后推前一个点吧~

  • 0
    @ 2008-10-20 13:02:40

    编译通过...

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

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

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

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

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

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

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

  • 0
    @ 2008-10-19 15:12:08

    编译通过...

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

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

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

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

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

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

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

    program p1123;

    var

    n,i,j,k:integer;

    a,s,m:array [0..10000] of longint;

    begin

    readln(n);

    s[0]:=0;

    for i:=1 to n do begin

    read(a[i]);

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

    end;

    k:=s[n] div n;

    j:=0;

    for i:=1 to n do

    if s[i]= k * i then inc(j);

    writeln(n-j);

    end.

    兄弟姐妹们,这是数学题啊!!

信息

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