215 条题解
-
0lyrics LV 3 @ 2008-11-10 08:25:17
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms说实话。。。第一遍还是蒙了。。
-
02008-11-09 11:39:59@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-Accepted 有效得分:100 有效耗时:0ms
如下做法,好水的题啊...可以预见一堆牌若不等于平均数,则只有向两边扔,它不能隔着几推牌扔,所以就I:=1---|>N-1 去推出 答案就好了
-
02008-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.{这水题还是题吗} -
02008-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;
} -
02008-11-07 23:25:04@
这题好难啊!!!不是一般的难!
想要代码,还是快给吧。。。 -
02008-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 -
02008-11-06 10:23:29@
谁来证明,为什么可以直接往右边取差值是最优步骤?
我当初想的是拿最大值分给最小值,重复以上步骤,,才拿20分
。。没状态,题目不认真看 -
02008-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 -
02008-11-28 16:44:04@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar
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.
标准的动规 -
02008-11-03 22:28:56@
....我怎么就米看出来这题这么简单呢..想复杂了...哎..
-
02008-10-31 19:43:00@
这题好水啊!!!不是一般的水!
想写出代码的,还是算了吧。。。 -
02008-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. -
02008-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.
水啊! -
02008-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 -
02008-10-26 16:36:34@
遍历一遍数组就行了.
N=平均数 跳过
N平均数 调整后继值,次数+1.
-
02008-10-22 23:20:24@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms水啊啊啊啊啊。。。一次编译。。一次AC。。要多水有多水。。
-
02008-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.水题呀水题
-
02008-10-21 19:52:57@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
数学题- -完全是数学题- -固定最后一个点然后推前一个点吧~
-
02008-10-20 13:02:40@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-10-19 15:12:08@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msprogram 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.兄弟姐妹们,这是数学题啊!!