• 【基础练习】【线性DP】codevs3027 线段覆盖2题解


    文章被盗还是非常严重,加版权信息

    转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看看


    这道题目是线性动归 可是思想和背包有些类似 事实上线性动归非常多思想都是背包类似 所以还是依照线性动归分类

    果然写了2就不想再写1的DP版本号了= =

    题目描写叙述 Description

    数轴上有n条线段,线段的两端都是整数坐标。坐标范围在0~1000000,每条线段有一个价值。请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点能够重合)且线段价值之和最大。

    n<=1000

    输入描写叙述 Input Description

    第一行一个整数n,表示有多少条线段。

    接下来n行每行三个整数, ai bi ci,分别代表第i条线段的左端点ai。右端点bi(保证左端点<右端点)和价值ci。

    输出描写叙述 Output Description

    输出可以获得的最大价值

    例子输入 Sample Input

    3

    1 2 1

    2 3 2

    1 3 4

    例子输出 Sample Output

    4

    数据范围及提示 Data Size & Hint

    数据范围

    对于40%的数据。n10

    对于100%的数据,n1000

    0<=ai,bi<=1000000

    0<=ci<=1000000

    题目如上

    思想是用结构体存储左右端点和值 f[i]表示的是选第i条线段所能有的最大值 方程f[i]=max{f[j]}+a[i].c 当中0<j<i且a[j].r<=a[i].l 即除端点外两线段不重叠 最后扫一遍 

    注意 f[i]表示的是选第i条线段所能有的最大值 并非前i条线段 私以为假设表示前i条的话可能还要多一维 但没想到非常好的方法 codevs题解区好像有人用前i条做的 能够看一下

    一次性A真高兴

    上代码 


    ——不敢高声语,恐惊天上人。



  • 相关阅读:
    WF4.0 自定义CodeActivity与Bookmark<第三篇>
    WF4 常用类<第二篇>
    WF4.0 Activities<第一篇>
    WWF3常用类 <第十一篇>
    WWF3XOML方式创建和启动工作流 <第十篇>
    element-ui表格显示html格式
    tail -f 加过滤功能
    vue 遇到防盗链 img显示不出来
    python No module named 'urlparse'
    grep awk 查看nginx日志中所有访问的ip并 去重
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7213694.html
Copyright © 2020-2023  润新知