zoukankan      html  css  js  c++  java
  • 「猙塛」弾杺綜鞊

    貌似问最多最少的都可以扯扯贪心

    1.P3045 [USACO12FEB]Cow Coupons G

    题目大意:

    (n)头牛,(m)块钱,(k)张优惠券,给每头牛的原价和用优惠券的优惠价,问最多能买几头

    贪心策略:

    反悔贪心:

    按优惠价排序后的前(k)头牛一定在选的牛内
    对于k之后的牛,考虑什么情况下使用优惠券
    当降价幅度比之前用过优惠券的更优时,回撤之前降价幅度最低的券
    即满足(c_i+p_j-c_j<p_i)的条件,(j)是当前牛,(p_i)表示原价,(c_i)表示优惠价
    至于第一句话的正确性,康康就行

    2.P1325 雷达安装

    题目大意:

    给一些坐标和雷达范围,限定雷达只能在(x)轴上,坐标在一二象限,问最少放多少雷达能覆盖所有坐标

    贪心策略:

    以每一个坐标为点,划个雷达范围的圆,看与最前方的点是否能在(x)轴相交,不能就更新为最前方的点
    正确性很显然:能相交就说明能共用雷达

    3.P1792 [国家集训队]种树

    题外话:哇,我那个时候竟然做过紫题,震惊(然而貌似是上课讲的)

    题目大意:

    (n)个位置,围成一圈,每个位置上种树得到的贡献不同,每个树两边的坐标不能种树,问最大贡献

    贪心策略:

    对每个位置都向左右扩展,用堆来实现
    以当前位置为起点,向左右建树,划定当前树的管辖范围和当前范围的总贡献
    每取堆上一个点,就向左右扩展并更新贡献
    新贡献为在:新栽的树-原贡献
    举例:
    1 2 3 4 5
    a b c d e
    3入堆,左区间为2,右区间为4,贡献为b+d-e
    取出堆顶 3
    左右扩展至1 5
    新贡献为a+e-(b+d-e)
    balabala

    4.P4823 [TJOI2013]拯救小矮人

    题目大意:

    几个矮子,给定手的长度和身子的高度,最顶上的矮子可以用手,能够到顶就能出去,问最多出去几个

    贪心策略:

    类似反悔贪心,先让个子和手都大的压在下面,小的放在上面,如果上面出不去,说明他永远出不去了,直接拉到底,换个人在上
    由于换的人不能选择,所以直接跑背包
    也可以理解为,可能一个人的个子大,手短,不逃出去更优,所以跑背包

    5.CF545C Woodcutters

    题目大意:

    一些树,可以向左倒也可以向右倒,条件是倒下的地方没有其他树,问最多倒多少树

    贪心策略:

    首先不用考虑第一颗树和最后一颗,一定能倒下(第一颗左边没树,最后一颗右边没树)
    然后其他的树,能向左倒就向左倒,不能就向右,然后更新右端点

  • 相关阅读:
    SEM关键词的三种分类方式
    分分钟解决 MySQL 查询速度慢与性能差
    为什么notify(), wait()等函数定义在Object中,而不是Thread中
    wait(), notify(), notifyAll()等方法介绍
    Java中的Volatile和synchronized的区别
    史上最简单的 SpringCloud 教程
    如何用git将项目代码上传到github
    常见排序
    【CodeForces】9B-Running Student
    【CodeForces】9A-Die Roll
  • 原文地址:https://www.cnblogs.com/614685877--aakennes/p/13791611.html
Copyright © 2011-2022 走看看