园艺布置-百度之星2011初赛题目求解

 1 /*
 2 @author tilltheendwjx
 3 @blog http://blog.csdn.net/wjh200821或者http://www.cnblogs.com/tilltheendwjx/ 
 4 */ 
 5 #include<iostream>
 6 using namespace std;
 7 
 8 int gcd(int a,int b)
 9 {
10     while(1)
11     {
12          int tmp=a%b;
13          if(tmp==0)
14             return b;
15          b=tmp;
16          a=b;             
17     }
18 }
19 int main()
20 {
21   int n,m;
22   cin>>n>>m;
23   int *data=new int[n];
24   for(int i=0;i<n;++i)
25        cin>>data[i];
26   if(m>n)
27       return -1;
28   float reault=0;
29   int denominat;
30   int Molecular;
31   for(int i=m;i<n;++i)
32   {
33       for(int j=0;j<n+1-i;++j)
34       {
35               int tmp=0;
36               for(int z=j;z<i+j;++z)
37               {
38                       tmp+=data[z];
39               }
40               float avg=(float)(tmp/i);
41               if((avg-reault)>0) 
42               {
43                      denominat=tmp;
44                      Molecular=i;
45                      reault=avg;                     
46               }
47       }  
48   }
49   int g=gcd(denominat,Molecular);
50   if(gcd==0)
51        return -1;
52   if(Molecular/g==1)
53       cout<<denominat/Molecular;
54   else
55       cout<<denominat/g<<"/"<<Molecular/g;
56   system("pause");
57   return 0;   
58 } 

题目如下:

园艺布置

时间限制:1000ms

描述

近期,百度采纳了员工们的提议,计划在总部大楼内部种植园艺,以提供更加温馨的工作环境。公司将园艺设计的任务交给了度度熊同学。

公司总部大楼内部的构造可以分为n个区域,编号为0, 1, …, n–1,其中区域ii + 1是相邻的(0 ≤ i < n – 1)。根据员工的投票和反馈,度度熊拿到了一份数据,表明在区域i种植园艺可以获得员工的满意度为Ai。度度熊希望园艺的布置方案满足条件:

1.     至少覆盖m个区域;

2.     布置园艺的区域是连续的。

请帮他找到一种满足条件的方案,使布置园艺区域的员工的满意度的平均值最大。

输入

输入的第一行包含两个整数nm,分别表示总区域数和至少覆盖的区域数。

第二行包含n个整数A0A1,…, An – 1,依次表示在每个区域种植园艺可以获得员工的满意度。

输出

输出一行,表示员工的平均满意度的最大值。如果这个数是一个整数,则直接按整数格式输出;否则,请用最简分数表示,分子分母以“/”分割,格式见样例。

样例输入

样例输入1

3 1

2 3 1

 

样例输入2

5 3

1 8 2 4 8

 

样例输出

样例输出1

3

 

样例输出2

11/2

 

提示

样例2的正确答案为11/2,尽管22/4数值也相同,但由于没有化简,所以是错误的。

对于100%的数据,1 ≤ m ≤ n ≤ 106,1 ≤ Ai ≤ 106

posted on 2012-05-17 11:47  tilltheendwjx  阅读(494)  评论(0编辑  收藏  举报

导航