• 独木舟上的旅行--nyoj题目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



    可以这样想想让体重从小到大排序,让最小的和最大的加看能不能超载,如果超了就让他和第二重的人加一起,如果不超,就让人数减一,证明可以省下一只船!
    也是典型的贪心算法


     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 int w[400];
     6 
     7 
     8 int main()
     9 {
    10     int N,n,i,s;
    11     scanf("%d",&N);
    12     while(N--)
    13     {
    14         scanf("%d%d",&s,&n);
    15         for(i=0;i<n;i++)
    16         scanf("%d",&w[i]);
    17         sort(w,w+n);
    18         int k=n-1,q=n;
    19         for(i=0;i<k;)
    20         {
    21             if(w[i]+w[k]<=s)
    22             {
    23                 q--;
    24                 i++;
    25                 k--;
    26             }
    27             else
    28             k--;//不能同坐就和下个人比较
    29         }
    30         printf("%d
    ",q);
    31     }
    32     return 0;
    33 }


  • 相关阅读:
    css
    数据库
    手机编码
    火锅开2了
    Linux 与 Virtual PC(VirtualBox)
    切图
    [zz] Loading Master Data without using the PSA in SAP BI 7.0
    Notes: CRM Analytics–BI from a CRM perspective (2)
    Notes: CRM Analytics–BI from a CRM perspective (3)
    Sharing: hints, tcodes, commands that may help when solving support package implementation problems
  • 原文地址:https://www.cnblogs.com/Eric-keke/p/4697102.html
Copyright © 2020-2023  润新知