RQNOJ 569 Milking Time:dp & 线段问题
题目链接: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();
}
RQNOJ 569 Milking Time:dp & 线段问题的更多相关文章
- ZOJ 3349 Special Subsequence 简单DP + 线段树
同 HDU 2836 只不过改成了求最长子串. DP+线段树单点修改+区间查最值. #include <cstdio> #include <cstring> #include ...
- hdu 3016 dp+线段树
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- cf834D(dp+线段树区间最值,区间更新)
题目链接: http://codeforces.com/contest/834/problem/D 题意: 每个数字代表一种颜色, 一个区间的美丽度为其中颜色的种数, 给出一个有 n 个元素的数组, ...
- Codeforces Round #620 F2. Animal Observation (hard version) (dp + 线段树)
Codeforces Round #620 F2. Animal Observation (hard version) (dp + 线段树) 题目链接 题意 给定一个nm的矩阵,每行取2k的矩阵,求总 ...
- [P3097] [USACO13DEC] [BZOJ4094] 最优挤奶Optimal Milking 解题报告(线段树+DP)
题目链接:https://www.luogu.org/problemnew/show/P3097#sub 题目描述 Farmer John has recently purchased a new b ...
- POJ1769 Minimizing maximizer(DP + 线段树)
题目大概就是要,给一个由若干区间[Si,Ti]组成的序列,求最小长度的子序列,使这个子序列覆盖1到n这n个点. dp[i]表示从第0个到第i个区间且使用第i个区间,覆盖1到Ti所需的最少长度 对于Si ...
- [USACO2005][POJ3171]Cleaning Shifts(DP+线段树优化)
题目:http://poj.org/problem?id=3171 题意:给你n个区间[a,b],每个区间都有一个费用c,要你用最小的费用覆盖区间[M,E] 分析:经典的区间覆盖问题,百度可以搜到这个 ...
- POJ 3162 Walking Race 树形DP+线段树
给出一棵树,编号为1~n,给出数m 漂亮mm连续n天锻炼身体,每天会以节点i为起点,走到离i最远距离的节点 走了n天之后,mm想到知道自己这n天的锻炼效果 于是mm把这n天每一天走的距离记录在一起,成 ...
- 【uva1502/hdu4117-GRE Words】DP+线段树优化+AC自动机
这题我的代码在hdu上AC,在uva上WA. 题意:按顺序输入n个串以及它的权值di,要求在其中选取一些串,前一个必须是后一个的子串.问d值的和最大是多少. (1≤n≤2×10^4 ,串的总长度< ...
随机推荐
- Sublime3破解教程[转载]
sublime text 3 这个IDE相信很多人认识,尤其是python的.相对pycharm ide而言,速度快.界面清爽等优点,下面就分享下各个版本的破解方法 用UltraEdit等编辑器打开s ...
- jquery相冊图片来回选择
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <script sr ...
- Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据.我们希望把这些数据导入到MySQL数据库中.phpMyadmin能够把MySQL数据库中的数据导出为JSON格式文件,但却 ...
- SQL之相关语法及操作符
概述:UNION.SELECT INTO.INSERT INTO SELECT.SQL约束 UNION操作符 UNION操作符用于合并两个或多个SELECT语句的结果集 请注意,UNION内部的每个S ...
- Controller跳转到外部链接
return new ModelAndView(new RedirectView("http://www.baidu.com")); 用了这个方法之后,方法的返回值也会变成mode ...
- request 获取请求头
/********************************************************servlet页面********************************** ...
- AWR元数据的迁移或导入到其它数据库
我们能够将AWR元数据迁移(导入)到其它数据库.低版本号的导入到高版本号,再用高版本号的数据库生成AWR报告,也能使用一些新特性,如 SQL ordered by Physical Reads (Un ...
- Erlang服务器内存吃紧的优化解决方法
问题提出:服务器100万人在线,16G内存快被吃光.玩家进程占用内存偏高 解决方法: 第一步:erlang:system_info(process_count). 查看进程数目是否正常,是否超过了er ...
- 3_Jsp标签_简单标签_防盗链和转义标签的实现
一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来 ...
- 做一个合格的程序员之浅析Spring AOP源代码(十八) Spring AOP开发大作战源代码解析
事实上上一篇文章价值非常小,也有反复造轮子的嫌疑,网上AOP的实例非常多,不胜枚举,事实上我要说的并非这个,我想要说的就是上一节中spring的配置文件: 我们这边并没实用到我们上几节分析的哪几个AO ...