zoukankan      html  css  js  c++  java
  • #寒假集训[20200113]

    贪心:
    eg1.区间调度问题
    n项工作,每项工作(x_i)开始,(y_i)结束,对于每项工作都可以选择参与与否,如果参与则中途不可以退出。参与工作的时间不可以重叠。问最多可以参加多少项工作。
    题解:
    线段覆盖。按结束时间升序排序后遍历查找选择即可。
    证明:
    要想选更多的任务,则需目前为止结束的时间最早,所以贪心正确。

    eg2.合并果子
    现在有n堆果子,第(i)堆有(a_i)个果子。现在要把这些果子合并成一堆,每次喝冰的代价是两队果子的总果子数,求合并所有果子的最小代价。
    题解:
    合并果子。每次选取最少的两堆果子合并,用优先队列维护即可。

    eg3.POJ3253
    给出n段木头长度l,求将一块长木头(长度为(Sigma l))分成这n段木头所需最小费用。每次切断木板时,需要的费用为原木板长度。
    题解:
    合并果子……一样的

    eg4.POJ3069
    在一条直线上,有n个点,坐标分别为(x_i)。从这n个点中选择若干个点,给他们加上标记,其距离为R以内的区域里必须有一个被标记的点。问至少要有多少点被加上标记。((1leq n leq 1000,0leq x_i,R leq 1000)
    题解:

    eg5.CF 12008
    n列方块,每列有(h_i)个方块,你有一个袋子初始有m个方块,容量无限,你初始在第一列,你可以从当前所在列拿或放方块,如果(|h_i - h_{i-1}|leq k),你可以到下一列,问你能否到第n列。
    题解:
    贪心的拿补当前列使得(h_i = h_{i+1} - k)

    eg6.洛谷 1080
    给定n个二元组(<a_i,b_i>)和两个数(a_0),(b_0)。现在你需要将n个二元组排序,使得(max_{i=1}^n {frac{Pi_{j=0}^{i-1}}{b_i}})
    题解:
    国王游戏。

    eg7.UVA11729
    有n个人要去执行任务,所有人都需要你来交代任务,第i个人交代任务的时间为(b_i),了解完任务之后不间断的执行(j_i)分钟,求完成所有任务的最短时间。(两人不能同时交代任务,但可以同时执行任务)
    题解:
    (max{(Sigma_{j=1}^i b_j + j_i)})
    交换两个相邻的人对其他人没有影响,所以先交代执行时间长的即可。讨论先i后j((max(b_i+j_i,b_i+b_j+j_j))(max(b_j+j_j,b_j+b_i+j_i))),可得比较(j_i>j_j)排序即可

  • 相关阅读:
    人月神话阅读笔记(三)
    MongoDB设置用户名以及密码
    pdf.js使用总结#如何在网页读取并显示PDF格式文档
    Python中eval函数的作用
    寒假学习笔记(13)
    寒假学习笔记(12)
    寒假学习笔记(11)
    寒假学习笔记(10)
    寒假学习笔记(9)
    寒假学习笔记(8)
  • 原文地址:https://www.cnblogs.com/mrha/p/12185634.html
Copyright © 2011-2022 走看看