【C++心路历程22】usaco contest 08.2 保护花卉 贪心算法 典型模型

本文探讨了一道USACO竞赛中的保护花卉问题,涉及大型数据集和两个相互影响的变量。通过分析两种顺序(i-j 和 j-i)下奶牛赶走策略对花朵损坏的影响,提出了一种基于比较的排序方法来确定最优解。文章以2头和3头奶牛为例,逐步阐述如何确定最先被赶走的奶牛,并将其应用于解决更复杂的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

特点 数据规模大 并且每个元素有两个属性(变量) 能互相影响 对题目要求有两方面
分析方法 考虑两个元素 i j ,比较i-j顺序和j-i顺序的差距 求最优解
1)假设只有 2 头奶牛:
按照 1,2 顺序,损坏花朵的数量为: C12 = 2*cow[1].T * cow[2].D;
按照 2,1 顺序,损坏花朵的数量为: C21 = 2*cow[2].T * cow[1].D;
因此,如果 C12<=C21,则按 1,2 顺序优,否则 2,1 顺序优
2)、假设只有 3 头牛
若 1 应最先被赶走,则需要满足:C12<=C21,C13<=C31
若 2 应最先被赶走,则需要满足:C21<=C12,C23<=C32
若 3 应最先被赶走,则需要满足:C31<=C13,C32<=C23
确定了最先被赶走的牛,则剩下的两头牛转换为 1)的分析(相同子问题
故有比较函数(排序)
bool cmp(data x,data y)
{
int Cxy=2*x.t*y.d;
int Cyx=2*y.t*x.d;
return Cxy<Cyx;
}

再计算即可

#inc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值