NC25043 [USACO 2007 Jan S]Protecting the Flowers
题目
题目描述
Farmer John went to cut some wood and left cows eating the grass, as usual. When he returned, he found to his horror that the cluster of cows was in his garden eating his beautiful flowers. Wanting to minimize the subsequent damage, FJ decided to take immediate action and transport each cow back to its own barn.
Each cow is at a location that is minutes away from its own barn. Furthermore, while waiting for transport, she destroys flowers per minute. No matter how hard he tries, FJ can only transport one cow at a time back to her barn. Moving cow to its barn requires minutes ( to get there and to return). FJ starts at the flower patch, transports the cow to its barn, and then walks back to the flowers, taking no extra time to get to the next cow that needs transport.
Write a program to determine the order in which FJ should pick up the cows so that the total number of flowers destroyed is minimized.
输入描述
Line : A single integer
Lines : Each line contains two space-separated integers, and , that describe a single cow's characteristics
输出描述
Line : A single integer that is the minimum number of destroyed flowers
示例1
输入
6 3 1 2 5 2 3 3 2 4 1 1 6
输出
86
题解
知识点:贪心,数学,排序。
注意到,交换某两头牛运送顺序,不改变其他结果。只要使任意两头牛的排序产生的毁坏最小,那么总毁坏将会是最小的,可以证明这是一个偏序关系,因此可以利用相邻两头牛的排序,来得到排序公式。
设 为相邻两牛毁坏的花, 为两牛逆序后毁坏的花,且 。
设之前所有牛的运送时间和为 。
所以有
显然有, 和 。为了使 ,那么
因此按此排序,最后序列的毁坏最小。
时间复杂度
空间复杂度
代码
#include <bits/stdc++.h> using namespace std; struct pk { int t, d; }p[100007]; int main() { std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int n; cin >> n; for (int i = 0;i < n;i++) { cin >> p[i].t >> p[i].d; } sort(p, p + n, [&](pk a, pk b) {return a.t * b.d < b.t *a.d;}); long long sum = 0, time = 0; for (int i = 0;i < n;i++) { sum += time * p[i].d; time += 2 * p[i].t; } cout << sum << '\n'; return 0; }
本文来自博客园,作者:空白菌,转载请注明原文链接:https://www.cnblogs.com/BlankYang/p/16383723.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧