zoukankan      html  css  js  c++  java
  • 南阳理工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,思路是想排序,然后最小加最大进行。

  • 相关阅读:
    codeforces 814B An express train to reveries
    codeforces 814A An abandoned sentiment from past
    codeforces 785D D. Anton and School
    codeforces 785C Anton and Fairy Tale
    codeforces 791C Bear and Different Names
    AOP详解
    Spring集成JUnit测试
    Spring整合web开发
    IOC装配Bean(注解方式)
    IOC装配Bean(XML方式)
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/3971458.html
Copyright © 2011-2022 走看看