zoukankan      html  css  js  c++  java
  • #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;
    }
    
  • 相关阅读:
    读取points文件
    JSP语法1
    servlet与SSI
    JDBC连接数据库
    django开发Blog(2)
    django开发Blog(1)
    JSP学习2:useBean动作标签
    django开发Blog(4)
    Servelet基础
    servlet会话管理2
  • 原文地址:https://www.cnblogs.com/lcbwwy/p/13089465.html
Copyright © 2011-2022 走看看