NYJO71&南阳理工oj_71(独木舟上的旅行) (贪心)
来源:互联网 发布:java中非线程安全的类 编辑:程序博客网 时间:2024/05/21 20:45
题目信息:
一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。找出可以安置所有旅客的最少的独木舟条数.
- 输入:
- 第一行输入s,表示测试数据的组数;
每组数据的第一行包括两个整数w,n,80<=w<=200,1<=n<=300,w为一条独木舟的最大承载量,n为人数;
接下来的一组数据为每个人的重量(不能大于船的承载量);
船只数
题意分析:
/***************************************************************************
贪心算法,找到最优结果进行判断对数据排序,判断最大和最小的和
与w的关系,if(a[max]+a[min]<=w)则已经送走两个人(n-=2),循环最大
和最小值,(此题一船最多载两个人)用(sum)记录船数,if不满足条件,
从最小一端(min)循环,直到与max相等退出循环,sum+=n;
(初学,描述不清,请见谅)
****************************************************************************/
源代码:
#include<iostream>//贪心算法
#include<algorithm>
using namespace std;
int a[301];
int main()
{
int t;
cin>>t;
while(t--){
int w,n;
cin>>w>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);//排序
int sum=0,i,j;
i=0;j=n-1;
while(1){
if(j<=i){//结束循环,并判断剩余人数,
sum+=n;
break;
}
if(a[i]+a[j]<=w){//两个人一条船
++i;//循环下标
n-=2;//人数减2
sum++;//船加1
}
--j;//从一端进行判断,直到另一端结束
}
cout<<sum<<endl;
}
return 0;
}
- NYJO71&南阳理工oj_71(独木舟上的旅行) (贪心)
- 南阳理工:独木舟上的旅行
- 理工贪心独木舟上的旅行
- 南阳理工acm71 独木舟上的旅行(贪心简单题)
- C语言 南阳理工 ACM 71 独木舟上的旅行
- 南阳理工OJ_题目71 独木舟上的旅行
- nyoj 南阳oj 071独木舟上的旅行 贪心
- 南阳oj NYOj 贪心 题目71 独木舟上的旅行
- 独木舟上的旅行(南阳oj71)(贪心)
- 独木舟上的旅行 贪心
- 独木舟上的旅行【贪心】
- 南阳 71 独木舟上的旅行
- 南阳71 独木舟上的旅行
- 南阳OJ独木舟上的旅行
- 南阳oj 71 独木舟上的旅行
- 南阳题目71-独木舟上的旅行
- 南阳oj 71 独木舟上的旅行
- 南阳ACM-独木舟上的旅行
- SQL Server Order by在union子句不可直接使用的原因
- java中equals和compareTo的区别---解惑
- C++ Concurrency in Action 书籍阅读
- A页面触发B页面事件
- linux下控制CPU不降频命令
- NYJO71&南阳理工oj_71(独木舟上的旅行) (贪心)
- 红黑树详解
- 大家一块来
- Oracle查看连接数并修改
- CreateDialog并关闭二级页面刷新父级页面
- MyBatis_与spring的整合之初步
- QCom MSM MDP显示驱动一些点的简记
- 目标检测的图像特征提取之(一)HOG特征
- Android中获取电池电量