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

特点 数据规模大 并且每个元素有两个属性(变量) 能互相影响 对题目要求有两方面 分析方法 考虑两个元素 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;
摘要由CSDN通过智能技术生成

特点 数据规模大 并且每个元素有两个属性(变量) 能互相影响 对题目要求有两方面
分析方法 考虑两个元素 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值