• #ECNU-2531[乘船]


    题意

    有n个人,每个人的重量为ci,每条船的最大承重为k,每条船最多乘坐两个人。在保证全部人上船的前提下,最少要多少条船

    解题思路:

    先排序,从最大的开始上船,若船还有空间就与最小的重量进行比较,若空间大于或等于最小的重量,那么这条船还可以装,若剩余的空间小于最小的重量,意味着这个最大的就单独一条船。

    乘船

    #include<bits/stdc++.h>
    using namespace std;
    int a[2010];
    int n,l,r,k;
    int main( )
    {
        int t;
        cin>>t;
        while(t--)
        {
            cin>>n>>k;
            for(int i=0; i<n; i++)
            {
                cin>>a[i];
            }
            l=0;
            r=n-1;
            sort(a,a+n);
            int ans=0;
            while(r>=l)//假如n是单数的话,或许最后一个单独一条船
            {
                int d=k-a[r];
                ans++;
                if(d>=a[l])//若空间有多,那么最小的重量就向右移
                {
                    l++;
                }
                r--;//最大重量一直左移
            }
            cout<<ans<<endl;
        }
    
        return 0;
    }
    
  • 相关阅读:
    MapReduce_wordcount
    HDFS脚本
    学习笔记——git
    CSS3选择器:nth-of-type
    CSS命名规范
    关于line-height
    css新特性 box-flex/flex 弹性盒状模型
    开始手机端
    sass
    优雅降级与渐进增强
  • 原文地址:https://www.cnblogs.com/lcbwwy/p/13089465.html
Copyright © 2020-2023  润新知