园艺布置-百度之星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,其中区域i与i + 1是相邻的(0 ≤ i < n – 1)。根据员工的投票和反馈,度度熊拿到了一份数据,表明在区域i种植园艺可以获得员工的满意度为Ai。度度熊希望园艺的布置方案满足条件:
1. 至少覆盖m个区域;
2. 布置园艺的区域是连续的。
请帮他找到一种满足条件的方案,使布置园艺区域的员工的满意度的平均值最大。
输入
输入的第一行包含两个整数n和m,分别表示总区域数和至少覆盖的区域数。
第二行包含n个整数A0, A1,…, 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) 编辑 收藏 举报