nyoj独木舟上的旅行

来源:互联网 发布:淘宝口令二合一生成器 编辑:程序博客网 时间:2024/05/18 21:46
#include<iostream>#include<algorithm>#include<string>#include<cstring>using namespace std;int a[500];int visit[500];bool cmp(int a,int b){return a>b;}int main(){int t,i,j;cin>>t;while(t--){memset(visit,0,sizeof(visit));int w,n;cin>>w>>n;for(i=0;i<n;i++){cin>>a[i];}sort(a,a+n,cmp);int sum=0;for(i=0;i<n;i++){int u=i;if(!visit[i]){for(j=0;j<n;j++){if(!visit[j]&&j!=i&&a[i]+a[j]<=w){u=j;}}visit[i]=1;visit[u]=1;sum++;}}cout<<sum<<endl;}return 0;}//本题应用贪心算法,因为一条船至少需要一个人,至多需要两个人。而每个人都要乘船过河,可以先选体重最大的人p1上船,然后看剩下没有过河的人中
//有没有人p2,判断w(p1)+w(p2)<=w。若没有:一条船只能载p1一个人。若有,则在可选人集合中P2中选取体重最大的人p2(max),一条船能载p1,p2(max)
//两个人
0 0
原创粉丝点击