亿万先生:标题叙述 Description,标题叙述 Description

十玖八 均分纸牌

2000年NOIP全国际结盟赛升高组

时限: 壹 s

空间限制: 12玖仟 KB

标题等级 : 黄金 戈尔德

 

难点叙述 Description

有 N 堆纸牌,编号分别为 壹,二,…, N。每堆上有若干张,但纸牌总数必为 N
的翻番。能够在任一群上取若于张纸牌,然后移动。
  移牌规则为:在号码为 壹 堆上取的叶子,只好移到数码为 2的堆上;在编号为 N 的堆上取的纸牌,只可以移到数码为 N-壹的堆上;别的堆上取的叶子,能够移到左近右边或右边的堆上。
  今后供给找出1种运动方法,用最少的运动次数使每堆上纸牌数都同样多。

  例如 N=四,四 堆纸牌数分别为:
  ① 9 ② 8 ③ 17 ④ 6
  移动二遍可高达指标:
  从 3 取 四 张牌放到 四 (玖 8 1三 10) -> 从 3 取 三 张牌放到 贰(9 11
十 拾)-> 从 二 取 一 张牌放到壹(十 拾 10 十)。

输入描述 Input Description

第一行N(N 堆纸牌,1 <= N <= 100)
第2行A一 A二 … An (N 堆纸牌,每堆纸牌初叶数,l<= Ai <=一千0)

出口描述 Output Description

出口至显示器。格式为:
负有堆均达到卓殊时的最少运动次数。‘

样例输入 萨姆ple Input

4
9 8 17 6

样例输出 山姆ple Output

3

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,ans=0,p=0;
 6     cin>>n;
 7     int a[n];
 8     for(int i=0;i<n;i++)
 9     {
10         cin>>a[i];
11         ans+=a[i];
12     }
13     ans/=n;
14     for(int i=0;i<n-1;i++)
15     if(a[i]!=ans)
16     {    
17         a[i+1]+=a[i]-ans;
18         p++;
19     }
20     cout<<p<<endl;
21     return 0;
22 }

 

10玖捌 均分纸牌

2004年NOIP全国际结盟赛升高组

时限: 一 s

空间限制: 128000 KB

标题等级 : 黄金 戈尔德

 

 

 

 

题材叙述 Description

有 N 堆纸牌,编号分别为 一,二,…, N。每堆上有若干张,但纸牌总数必为 N
的翻番。能够在任一批上取若于张纸牌,然后移动。
  移牌规则为:在数码为 壹 堆上取的纸牌,只可以移到数码为 二的堆上;在号码为 N 的堆上取的纸牌,只好移到数码为 N-一的堆上;别的堆上取的叶子,能够移到隔壁左侧或右侧的堆上。
  今后须求找出壹种运动方法,用最少的移位次数使每堆上纸牌数都没有差别多。

  例如 N=4,4 堆纸牌数分别为:
  ① 9 ② 8 ③ 17 ④ 6
  移动三遍可达到指标:
  从 三 取 四 张牌放到 肆 (九 8 一三 拾) -> 从 三 取 叁 张牌放到 贰(玖 11
10 十)-> 从 2 取 一 张牌放到壹(10 10 10 10)。

输入描述 Input Description

第一行N(N 堆纸牌,1 <= N <= 100)
第一行A壹 A贰 … An (N 堆纸牌,每堆纸牌先河数,l<= Ai <=一千0)

出口描述 Output Description

出口至荧屏。格式为:
抱有堆均达到非常时的最少运动次数。‘

样例输入 Sample Input

4
9 8 17 6

样例输出 萨姆ple Output

3

数码范围及提醒 Data Size & Hint

e

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int a[101];
 5 int n;
 6 int main()
 7 {
 8     int jun=0;
 9     cin>>n;
10     for(int i=1;i<=n;i++)
11      {
12          cin>>a[i];
13          jun+=a[i];
14      }
15      jun/=n;
16      int ans=0;
17      for(int i=1;i<=n;i++)
18       {
19           if(a[i]!=jun)
20            {
21                ans++;
22                a[i+1]-=(jun-a[i]);
23            }
24       }
25       cout<<ans;
26 }

 

相关文章

网站地图xml地图