加强赛(二)B - Rotten Ropes POJ - 2291

感谢我的学长们对我的带领;

本题思想来源于我的学长:WArobot;

现有长短相等粗细不等(即最大承受中重量不等)的若干根绳子;

本题有三种承受能力分别为:1,10,15的绳子;

首先输入N,N为N组测试数据;

n为n个绳子,接下来是n个数据,代表每个绳子的最大承受的重量;

几个承受能力不同的绳子一起的承受能力取决于承受能力最小的,

例如:一个承受能力为3的和一个承受能力为1的放在一起举起重量为2的重物,根据物理知识:重力会平均分配给每一个绳子;

输出这些绳子所能承受的最大重量;

所以n跟绳子能承受的重量为:承受能力最小的绳子的承受极限乘以n,

然后假设最短的断掉,剩下的如上方法计算承受能力,用一个计数器变量记录每次能承受的重量,并且以最大的为标准不断更新计数器变量;

最后输出计数器变量;

代码如下:

#include "iostream"
#include "algorithm"
using namespace std;
int main(){
int N,n,Max;
int max[1005];
cin>>N;
while(N--){
cin>>n;
Max=0;
for(int i=0;i<n;i++) cin>>max[i];
sort(max,max+n);
for(int i=0;i<n;i++){
if(Max<(max[i]*(n-i)))
Max=max[i]*(n-i);
}
cout<<Max<<endl;
}
return 0;
}

posted @ 2017-03-14 23:56  雪晨  阅读(98)  评论(0编辑  收藏  举报