zoukankan      html  css  js  c++  java
  • 独木舟上的旅行http://acm.nyist.net/JudgeOnline/problem.php?pid=71


    独木舟上的旅行
    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
     
    描述

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

     
    输入
    第一行输入s,表示测试数据的组数;
    每组数据的第一行包括两个整数w,n,80<=w<=200,1<=n<=300,w为一条独木舟的最大承载量,n为人数;
    接下来的一组数据为每个人的重量(不能大于船的承载量);
    输出
    每组人数所需要的最少独木舟的条数。
    样例输入
    3
    85 6
    5 84 85 80 84 83
    90 3
    90 45 60
    100 5
    50 50 90 40 60
    
    样例输出
    5
    3
    3
    #include<stdio.h>
    #include<stdlib.h>
    
    int cmp(const void *a,const void *b)
    {
    	return *(int *)a-*(int *)b;
    }
    
    int main()
    {
    	int s;
    	scanf("%d",&s);
    	while(s--)
    	{
    		int count,i,j,n,w;
    		int a[310];
    		scanf("%d %d",&w,&n);
    		for(i=0;i<n;i++)
    			scanf("%d",&a[i]);
    		qsort(a,n,sizeof(a[0]),cmp);
    		count=n;
    		for(i=0;i<n;i++)
    			for(j=n-1;j>i;j--)
    			{
    				if(a[i]+a[j]<=w)
    				{
    					count--;
    					a[j]=w+1;
    					break;
    				}	
    			}
    		printf("%d
    ",count);
    	}
    
    	return 0;
    }
    

     这个题很有意思。解题思想:想用sort排序,然后找到和前面比较轻a[i]的相结合的a[j],找到一个a[j],就可以少一条木筏,可是每条木筏上只能有两个人,所以,当找到a[j]时,别忘了标记a[j],只要让他大于w就不会重复计算了。

  • 相关阅读:
    Linux守护进程
    sequel pro无法连接mysql服务器
    socket编程之并发回射服务器2
    Unix的I/O模型
    nginx.conf laravel 配置
    phpstudy使用PHP+nginx配置Laravel
    nginx配置文件分开配置
    centos安装composer
    linux下 设置php的环境变量 php: command not found
    laravel 安装
  • 原文地址:https://www.cnblogs.com/wangyouxuan/p/3260099.html
Copyright © 2011-2022 走看看