zoukankan      html  css  js  c++  java
  • 【HDU6709】Fishing

    题目大意:有 N 条鱼,每条鱼都有钓鱼和烤鱼的时间,钓鱼的时间均相同,每条鱼都有自己的烤鱼时间,一次只能烤一条鱼,且不能间断。现要求通过某种顺序将所有的鱼钓上来并烤完,求最小的时间是多少。

    题解:
    对于顺序可以自选的情况,可以从全局的角度进行考虑。对于最终状态,每条鱼被烤的时间和钓鱼的总次数是固定的,且一定要先钓上来一条鱼。最好情况就是所有的其他鱼均可以在烤鱼的时候钓上来。不过,可能会存在一些烤鱼的时间无法满足钓上来一整条鱼的时间。因此,可能会出现正在钓鱼但是锅里没有鱼的情况,这部分时间是被浪费的时间。那么,我们只需要使得这部分的时间最小即可,即:用这些最小的时间去钓鱼,其他剩余的时间等待,保证总有鱼在锅里煮。

    代码如下

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    
    int main() {
    	int T;
    	scanf("%d", &T);
    	while (T--) {
    		static int n, k;
    		scanf("%d %d", &n, &k);
    		vector<int> t(n + 1), waste(n + 1);
    		LL ans = k;
    		int cnt = 0;
    		for (int i = 1; i <= n; i++) {
    			scanf("%d", &t[i]);
    			ans += t[i];
    			cnt += t[i] / k;
    			waste[i] = k - t[i] % k;
    		}
    		if (cnt >= n - 1) {
    			printf("%lld
    ", ans);
    		} else {
    			sort(waste.begin(), waste.end());
    			int need = n - 1 - cnt;
    			for (int i = 1; i <= need; i++) {
    				ans += waste[i];
    			}
    			printf("%lld
    ", ans);
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    Linux上vi(vim)编辑器使用教程
    什么是servlet
    探索ArrayList自动改变size真相
    十种算法
    二级缓存:EHCache的使用
    Lucene:基于Java的全文检索引擎简介
    简述 Hibernate 和 JDBC 的区别、优缺点
    Spring学习笔记
    如何复制表结构、如何复制表数据:
    破解安装 SecureCRT 7.0.2 for mac完美破解版,mac secureCRT , apple secureCRT
  • 原文地址:https://www.cnblogs.com/wzj-xhjbk/p/11425396.html
Copyright © 2011-2022 走看看