• 南阳理工ACM 第71题


    独木舟上的旅行

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
    描述

    进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。我们要尽量减少这次活动中的花销,所以要找出可以安置所有旅客的最少的独木舟条数。现在请写一个程序,读入独木舟的最大承载量、旅客数目和每位旅客的重量。根据给出的规则,计算要安置所有旅客必须的最少的独木舟条数,并输出结果。

    输入
    第一行输入s,表示测试数据的组数;
    每组数据的第一行包括两个整数w,n,80<=w<=200,1<=n<=300,w为一条独木舟的最大承载量,n为人数;
    接下来的一组数据为每个人的重量(不能大于船的承载量);
    输出
    每组人数所需要的最少独木舟的条数。
    样例输入
    385 65 84 85 80 84 8390 390 45 60100 550 50 90 40 60
    样例输出

    533


    #include "stdio.h"
    int main(int argc, char* argv[])
    {
       int N;
       scanf("%d",&N);
       while(N--)
       {
    	   int w,n,i,j,count=0,k;
    	   int a[310]={0};
    	   scanf("%d%d",&w,&n);
    	   k=n;
           while(k--)
    	   {
    		   scanf("%d",&a[k]);
    	   }
           for(i=0;i<n-1;i++)
    		   for(j=i+1;j<n;j++) 
    			   if(a[i]>a[j])
    			   {
    				   int temp;
    				   temp=a[i];
    				   a[i]=a[j];
    				   a[j]=temp;
    			   }
    			   if(a[0]>=w||(a[0]<w&&a[0]+a[1]>w))
    			   {
    				   printf("%d
    ",n);
    			   }
    			   else if(a[0]+a[n-1]<=w)
    			   {
    				   printf("%d
    ",n/2+1);
    			   }
    			   else
    			   {
    					   for(j=n-1;;j--)
    					   {
    						   if(j&&(a[0]+a[j]<=w))
    						   {
                                   printf("%d
    ",j/2+n-j);
    							   break;
    						   }
    					   }
    			   }
       }
       return 0;
    }

    ac,思路是想排序,然后最小加最大进行。

  • 相关阅读:
    SAP BDC批量导入数据(转)
    如何快速从BSEG读取数据(转)
    刷新ALV定位到当前记录行
    一些常用的系统变量(SYST)
    javascript实例
    selenium webDriver属性
    获取豆瓣电影数据
    新浪微博超话题签到demo
    java读取XML文件的四种方法总结(必看篇)
    StringReader分析
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4258739.html
Copyright © 2020-2023  润新知