博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Fishing Master HDU - 6709 】【贪心】
阅读量:4966 次
发布时间:2019-06-12

本文共 1314 字,大约阅读时间需要 4 分钟。

题意分析

题意:题目给出n条鱼,以及捕一条鱼所用的时间k,并给出煮每一条鱼的时间,问抓完并煮完所有鱼的最短时间。

思路
1.捕第一条鱼的时间是不可避免的,煮每条鱼的时间也是不可避免的,这些都要算上。
2.可以优化的是煮鱼的时间,在时间允许的范围内可进行捕其他鱼。当然煮鱼的时间也许不够捕其他鱼,这就需要增加额外的时间。
3.设在煮每条鱼煮的时间内抓的最多的鱼数为cnt,捕鱼的时间为cost,将每次额外增加的时间存储在一个数组中,记为fre[ ]。
4.更多详细信息在代码中给出。

AC代码

/*贪心*/#include
#include
#include
#include
#include
using namespace std;typedef long long LL;const int maxn = int(1e5+10);int T, n, k;int cnt; //在煮鱼期间最多能钓上来的鱼数int t[maxn], fre[maxn];LL cost;int main(){ // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); scanf("%d", &T); while(T--) { scanf("%d%d", &n, &k); cost = k; //捕第一条鱼的时间不可避免 cnt = 0; memset(t, 0, sizeof(t)); memset(fre, 0, sizeof(fre)); for(int i = 0; i < n; i++) { scanf("%lld", &t[i]); cost += t[i]; //煮鱼的时间不可避免 cnt += t[i] / k; fre[i] = k - t[i] % k; //k - 每次煮鱼的时间所剩余的可利用时间 = 多投入的时间 } if(cnt < n - 1) { sort(fre, fre + n); for(int i = 0; i < n - 1 - cnt; i++) //贪心思想,从小往大加 cost += fre[i]; } printf("%lld\n", cost); }}

参考博客:

转载于:https://www.cnblogs.com/KeepZ/p/11408837.html

你可能感兴趣的文章
php json_decode失败,返回null
查看>>
获取单选按钮选中的值
查看>>
oracle 分页
查看>>
助教学期总结
查看>>
绘制基本 图形之矩形与多边形
查看>>
3-day3-list-truple-map.py
查看>>
02: djangorestframework使用
查看>>
Edit控件显示多行文字
查看>>
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
服务器一:分布式服务器结构
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
(转载)博弈汇总【巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈】
查看>>
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
【7-9 有重复的数据I (20 分)】【此题卡输入,需要自己写个输入挂】
查看>>