加强赛(二)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;
}