加強賽(二)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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章