独木舟问题
n个人,已知每个人体重,独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?
分析:按照人的体重排序,最轻的人跟最重的人尽量安排在一条船上,如果超过就安排最重的.
1 #include<stdio.h> 2 #include<iostream> 3 #include<algorithm> 4 using namespace std; 5 int main(){ 6 int n,m; 7 while(scanf("%d%d",&n,&m)==2){ 8 int i,j,ans=0; 9 int a[10001]; 10 for(i=0;i<n;i++){ 11 scanf("%d",&a[i]); 12 } 13 sort(a,a+n); 14 j=n-1; 15 i=0; 16 while(i<j){ 17 if(a[i]+a[j]<=m){ 18 ans++; 19 i++; 20 j--; 21 } 22 else{ 23 ans++; 24 j--; 25 } 26 } 27 if(i==j) 28 ans++; 29 printf("%d ",ans); 30 } 31 }