首页 > 其他分享 >贪心总结

贪心总结

时间:2023-08-06 15:34:07浏览次数:37  
标签:总结 -- S1 区间 最优 排序 贪心

一、基本思想

-->归纳、分析、选择正确合适的贪心策略

在每一个局部阶段,都做一个在当前“看上去”最优的决策,并期望通过每一次所做的局部最优选择产生出一个全局最优解。做出贪心决策的依据称为“贪心策略”。贪心策略一旦做出,就不可再更改。

二、3种证明方法(反证法,构造法,调整法)

1、反证法

用贪心的策略,依次构造出一个解 S1,假设最优解 S2 不同于S1,可以证明是矛盾的,从而得出 S1 就是最优解。(举出反例

eg:n个字符串凑成最大整数

->将 A+B 与 B+A 相比较,如果前者大于后者,则认为 A>B。

2、构造法

根据描述的算法,用贪心的策略依次构造出一个解,可证明一定是合法的解。即用贪心法找可行解。( 举例子

eg:取火柴游戏(博弈论)

->转成二进制后,进行异或。为0则先取必败;为1则先取必胜

3、调整法

用贪心的策略,依次构造出一个解 S1。假设最优解 S2 不同于 S1,找出不同之处,在不破坏最优性的前提下,逐步调整 S2,最终使其变为 S1,从而 S1 也是最优解。( 调整a[i]和a[j]进行比较

eg:排队接水

->把接水时间少的人尽可能排在前面

三、实时调整类贪心

-->每做一步决策都得重新调整决策

eg:桐桐的新闻系统

->将间隔从小到大排序,输出一个(出队)后将它加上间隔再入队

四、贪心的常见模型

  • 货币选择问题

    -->化异为同(先选面值大的,再选小的)

  • 区间调度问题

    -->以结束时间递增排序

  • 部分背包问题

    -->按照单位价值递减排序

  • 区间相关问题

    (1)选择不相交区间:

    数轴上有 n 个开区间。选择尽量多个区间,使得这些区间两两没有公共点。

    -->按照右端点递增排序

    (2)区间选点问题:

    数轴上有 n 个闭区间。取尽量少的点,使得每个区间内都至少有一个点。

    -->按照右端点递增排序&&左端点递减排序

    (3)区间覆盖问题:

    数轴上有 n 个闭区间,选择尽量少的区间覆盖一条指定线段。
    -->按照左端点递增排序

标签:总结,--,S1,区间,最优,排序,贪心
From: https://www.cnblogs.com/xishanmeigao/p/17609459.html

相关文章

  • 核心api_JDBC_使用步骤总结
    JDBC使用步骤总结注册驱动Class.forName("com.mysql.cj.jdbc.Driver");获取链接Connectionconnection=DriverManager.getConnection(url,user,password);创建statement//静态:Statementstatement=connection.createStatement();//动态:Prepa......
  • 贪心的农场主
    小明有n头耕牛,每头耕牛在工作前必须吃草,现在你有m单位的草料,你可以将这些草料随意的分给每头牛,但是草料不可分割。并且每头牛在体力小于k时,是不会耕种的,假设每单位草料给牛补充1点体力,牛在一开始耕种前可以认为体力为0,即某头牛被分配的草料低于k单位,则偷懒不耕种。耕牛的耕种强度......
  • 假期总结
    HiveServer2是一个服务接口,能够允许远程的客户端去执行SQL请求且得到检索结果。HiveServer2的实现,依托于ThriftRPC,是HiveServer的提高版本,它被设计用来提供更好的支持对于openAPI例如JDBC和ODBC。HiveServer是一个可选的服务,只允许一个远程的客户端去提交请求到hive中。--在hd......
  • 下个3年规划总结展望
    2023年中总结一晃已经工作5年了,加上实习的一年已经6年了。来这家公司已经也3年了,最近2个多月一直在忙服务器迁移的工作,期间接触到了很多开发之外的东西,自己对于服务器业务部署有了更全面的认识。一个资深的后端开发,应该具备很强的运维能力。写了几年的业务代码,有机会接触到完......
  • Spring Boot问题总结
    访问无响应指定包@ComponentScan(basePackages="com.example")浏览器访问跨域问题将所有请求全部放行而且每个请求都要加@CrossOrigin(origins="*")get返回htmlhtml放后端,首先dependency要依赖thymeleaf<dependency><groupId>org.springframe......
  • 【比赛·总结】2023.8 学而思Z6模拟赛
    2023.8学而思Z6模拟赛考试界面:(隐藏)题解反思在本次考试中,作者惨遭爆零。警钟长鸣\(3\)分钟。作者认为,爆零的主要原因在于作者并没有遵从“遇到难题则跳过”的原则,疯狂卡在第一题上,从第\(0\)分钟一直到最后\(1\)秒,除了其中写了一个第二题的暴力,还因为读错题没得分以外,其......
  • 8月5日总结
    8.5周六上午写了ptajava:遍历collection集合Iterator:迭代器,集合的专用遍历方式Iterator<E>iterator();返回此集合中请的迭代器.迭代器依赖于集合而存在.Iterator中常用方法Enext();返回迭代中的下一个元素bolleanhasNext():如果迭代具有更多元素,则返回true集合使用步骤publ......
  • 8月5日进度总结
    一.今天做了什么背科目三灯光和和科目四,写pta题,学习html+css内容二.遇到的问题,如何解决无三.明天准备做什么背科目三灯光和和科目四,写pta题,学习html+css内容......
  • 假期第四周总结
    本周学习进行MapReduce&YARN的部署,完成了相关配置文件的修改和分发,集群的启动和历史服务器的启动,遇到了代码过多且ppt中给的代码为图片的问题,解决方法是发现ppt中的文件可以打开,打开文件进行复制。进行hive的安装配置,完成了MySQL数据库的安装,Hadoop的配置,hive的下载解压,MySQL驱......
  • 第六周训练总结
    比赛总结牛客多校第五场3/4/10AC:C、D、G补题:H总结:本场比赛我们三个人开题是4,3,3分配的,然后有谁发现签到题,就会找另外一个说一下思路,然后开始敲代码。首先发现G题就和之前做过的一道题很相似,直接遍历加上尺取法就可以了,ska很快就敲完代码,然后交上去就直接ac了。然后就......