题目链接:https://www.rqnoj.cn/problem/569

题意:

  在一个数轴上可以摆M个线段,每个线段的起始终止端点给定(为整数),且每个线段有一个分值,问如何从中选取一些线段使得任意两个线段之间的距离大于等于R。每一条线段属于[0,N]。如何选择这些线段,使得分值之和最大?

  定义:两线段间的距离 = 相邻端点坐标之差的绝对值

题解:

  讲真。。。这里的N真的没用。。。

  首先要用左端点从小到大排序。

  

  表示状态:

    dp[i] = max score (选了线段i的当前最大分值)

    i:选了第i个线段

  找出答案:

    max dp[i]

  如何转移:

    枚举在i之前的线段j,判断位置是否合法。

    if(lef[i]-rig[j]>=r) dp[i]=max(dp[i],dp[j]+val[i]);

  边界条件:

    dp[i] = val[i]

    至少选上自己。

AC Code:

 // state expression:
// dp[i] = max score
// i: ith segment is selected
//
// find the answer:
// max dp[i]
//
// transferring:
// if lef[i] - rig[j] >= r
// dp[i] = max dp[j] + w[i]
//
// boundary:
// dp[i] = w[i]
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define MAX_M 1005 using namespace std; struct Segment
{
int lef;
int rig;
int val;
Segment(int _lef,int _rig,int _val)
{
lef=_lef;
rig=_rig;
val=_val;
}
Segment(){}
friend bool operator < (const Segment &a,const Segment &b)
{
return a.lef<b.lef;
}
}; int n,m,r;
int ans;
int dp[MAX_M];
Segment s[MAX_M]; void read()
{
cin>>n>>m>>r;
for(int i=;i<m;i++)
{
cin>>s[i].lef>>s[i].rig>>s[i].val;
}
} void solve()
{
sort(s,s+m);
for(int i=;i<m;i++)
{
dp[i]=s[i].val;
for(int j=;j<i;j++)
{
if(s[i].lef-s[j].rig>=r)
{
dp[i]=max(dp[i],dp[j]+s[i].val);
}
}
}
ans=;
for(int i=;i<m;i++)
{
ans=max(ans,dp[i]);
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}

最新文章

  1. c#操作xml文件(XmlDocument,XmlTextReader,Linq To Xml)
  2. Java 接口练习题
  3. 遍历后台的List,让前台的多选宽被选中
  4. C++生成二级制文件过程(预处理-&gt;编译-&gt;链接 )
  5. [LeetCode] TwoSum
  6. iOS开发之网络编程--2、NSURLSessionDownloadTask文件下载
  7. 原生js日期时间插件鼠标点击文本框弹出日期时间表格选择日期时间
  8. 你好,C++(32) 类是对现实世界的抽象和描述 6.2.1 类的声明和定义
  9. Apache/Tomcat/JBOSS/Nginx区别
  10. 201621123057 《Java程序设计》第11周学习总结
  11. 《Effective C++》让自己习惯C++:条款1-条款4
  12. Ionic 2 官方示例程序 Super Starter
  13. PHP自动加载SPL的四种处理方式
  14. ASP.Net中的四种状态保持机制
  15. SSL证书读取
  16. Android studio 安装中遇到一些问题的解决办法,分享一下
  17. 两个Map融合
  18. dhroid - ioc基础(@Inject*)
  19. HTTP2 帧基础知识以及Header、CONTINUATION、DATA帧相关资料:
  20. vue中axios调用接口和用node.js跨域

热门文章

  1. vuex 中关于 mapState 的作用
  2. GEM演唱会
  3. OOA/OOD/OOP的区别
  4. Android微信分享功能实例+demo
  5. dm8148 videoM3 link源代码解析
  6. MVC项目总结
  7. HTML经典标签用法
  8. 史上最浅显易懂的Git教程1
  9. H2 database 操作操作内存表
  10. UFLDL教程