
花生采摘
收集花生数据:首先读取花生田的大小和花生分布,记录所有有花生的植株及其花生数量。 排序植株:将这些有花生的植株按花生数量从高到低排序,以便优先采摘花生最多的植株。 计算时间:从路边到每个目标位置的移动时间包括水平和垂直移动的时间,再加上采摘花生的时间。确保总时间不超过限定时间K。 采摘顺序:依次处理排序后的植株,计算每次移动和采摘所需的时间,直到时间用尽或所有植株都被采摘。 读取输入:读取花生田的大小M和N,以及限定时间K。 初始化花生分布:使用二维数组存储花生分布数据。 收集有花生的植株:遍历花生田,记录所有有花生的植株及其花生数量。 排序植株:按花生数量从高到低排序,以便优先采摘。 计算时间和采摘顺序:从路边开始,依次处理排序后的植株,计算移动和采摘所需的时间,确保总时间不超过K。 输出结果:输出在限定时间内最多采摘的花生数量。
发布日期:2021-05-07 06:56:09
浏览次数:20
分类:精选文章
本文共 1613 字,大约阅读时间需要 5 分钟。
为了解决这个问题,我们需要找到一种方法,让多多在限定时间内尽可能多地采摘花生。多多只能从路边跳到相邻的花生植株,并采摘花生。每次移动和采摘都需要时间,我们需要优化采摘顺序以在限定时间内采摘最多的花生。
方法思路
解决代码
#include#include #include using namespace std;int main() { int M, N, K; scanf("%d %d %d", &M, &N, &K); vector > a(M + 1, vector (N + 1, 0)); for (int i = 1; i <= M; ++i) { int row_sum = 0; scanf("%d", &a[i][1]); for (int j = 2; j <= N; ++j) { int num; scanf("%d", &num); a[i][j] = row_sum + num; row_sum += num; } } vector > positions; vector nums; for (int i = 1; i <= M; ++i) { for (int j = 1; j <= N; ++j) { if (a[i][j] > 0) { positions.push_back(make_pair(i, j)); nums.push_back(a[i][j]); } } } sort(positions.begin(), positions.end(), [&nums](int i, int j) { return nums[i-1] > nums[j-1]; }); int ans = 0; int current_time = 0; int prev_i = 1; int prev_j = 1; for (int p = 0; p < positions.size(); ++p) { int i = positions[p].first; int j = positions[p].second; int num = nums[p]; int dx = abs(i - prev_i); int dy = abs(j - prev_j); int total = current_time + dx + dy + 1; if (total <= K) { ans += num; current_time = total; prev_i = i; prev_j = j; } } cout << ans << endl; return 0;}
代码解释
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月08日 21时43分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python2跟Python3的区别
2019-03-06
并发编程——IO模型详解
2019-03-06
Java之封装,继承,多态
2019-03-06
wait()与notify()
2019-03-06
使用js打印时去除页眉页脚
2019-03-06
Spring security OAuth2.0认证授权学习第二天(基础概念-RBAC)
2019-03-06
ORA-00904: "FILED_TYPE": 标识符无效
2019-03-06
Redis系统学习之Redis性能测试工具
2019-03-06
数据仓库系列之维度建模
2019-03-06
Scala教程之:函数式的Scala
2019-03-06
java中DelayQueue的使用
2019-03-06
java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程
2019-03-06
线程stop和Interrupt
2019-03-06
Android中定时执行任务的3种实现方法
2019-03-06
nodejs中npm常用命令
2019-03-06
基于Vue2.0+Vue-router构建一个简单的单页应用
2019-03-06
基于vue2.0实现仿百度前端分页效果(二)
2019-03-06
JS魔法堂:函数重载 之 获取变量的数据类型
2019-03-06
时间序列神器之争:Prophet VS LSTM
2019-03-06