zoukankan      html  css  js  c++  java
  • ACM 独木舟上的旅行

    独木舟上的旅行

    时间限制: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 <iostream>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    int main(){
        int s;
        cin >>s;
        for(int icase = 0 ; icase < s; ++ icase){
            int w,n;
            cin >> w >> n;
            vector<int> a(n,0);
            vector<bool> flag(n,false);
            for(int i = 0 ; i < n; ++ i )
                cin >> a[i];
            sort(a.begin(),a.end());
            int res = 0;
            for(int i = n-1; i >= 0 ; --i){
                if(!flag[i]){
                    flag[i]=true;
                    for(int j = i; j>=0; --j){
                        if(!flag[j]){
                            if(a[j] <=w-a[i]) {
                                flag[j] = true;
                                break;
                            }
                        }
                    }
                     res++;
                }
            }
            cout<<res<<endl;
        }
    }
     
  • 相关阅读:
    软件工程课件
    团队博客作业Week1
    IntelliJ IDEA下Git的配置与使用(命令行下)
    Java语言程序设计课程学期总结
    JDBC访问数据库的一些小技巧
    Conference-Web Search and Data Mining
    线程停止与volatile
    班会-2016-2017第2学期
    Java第11次实验(JDBC数据库编程)
    Python-Jupyter Notebook使用技巧
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3655914.html
Copyright © 2011-2022 走看看