P2889 [USACO07NOV]挤奶的时间Milking Time
P2889 [USACO07NOV]挤奶的时间Milking Time
奶牛Bessie在0~N时间段产奶。农夫约翰有M个时间段可以挤奶,时间段f,t内Bessie能挤到的牛奶量e。奶牛产奶后需要休息R小时才能继续下一次产奶,求Bessie最大的挤奶量。
错误日志: dp[i]转移的设计强制选择了第 i 个(自己还没发现)【然后后面发现又有问题唉】
Solution
先把 \(R\) 累积到右端点中, 排序
设 \(dp[i]\) 为考虑前 \(i\) 个区间, 第 \(i\) 个区间必选的最大获利
为什么要必选呢? 这样才能方便转移
容易写出方程:$$dp[i] = v[i] + \max_{0 \leq j \leq i - 1}dp[j]\ \ \ [r_{j} \leq l_{i}]$$
再回到为什么要必选, 这样才能有转移的判断条件(从必选的转移而来)
为了方便, 我们引入一个起点, 一个重点, 权值都为 \(0\) ,不影响结果而可以方便计算
Code
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<climits>
#define LL long long
#define REP(i, x, y) for(int i = (x);i <= (y);i++)
using namespace std;
int RD(){
int out = 0,flag = 1;char c = getchar();
while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();}
while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();}
return flag * out;
}
const int maxn = 2019;
int num, nr, R;
struct Node{int l, r, v;}I[maxn];
bool cmp(Node a, Node b){return a.l < b.l;}
int dp[maxn];
int main(){
num = RD(), nr = RD(), R = RD();
REP(i, 1, nr)I[i] = (Node){RD(), RD() + R, RD()};
sort(I + 1, I + 1 + nr, cmp);
I[0].r = -1026;//起点
I[nr + 1].l = num + R + 19;//终点
REP(i, 1, nr + 1){
REP(j, 0, i - 1){
if(I[j].r <= I[i].l)dp[i] = max(dp[i], dp[j] + I[i].v);
else dp[i] = max(dp[i], dp[j] - I[j].v + I[i].v);
}
}
printf("%d\n", dp[nr + 1]);
return 0;
}
P2889 [USACO07NOV]挤奶的时间Milking Time的更多相关文章
- bzoj1642 / P2889 [USACO07NOV]挤奶的时间Milking Time
P2889 [USACO07NOV]挤奶的时间Milking Time 普通的dp 休息时间R其实就是把结束时间后移R个单位而已.但是终点也需要后移R位到n+R. 每个时间段按起始时间排序,蓝后跑一遍 ...
- 【题解】Luogu P2889 [USACO07NOV]挤奶的时间Milking Time
Luogu P2889 [USACO07NOV]挤奶的时间Milking Time 题目描述 传送门Bessie is such a hard-working cow. In fact, she is ...
- [USACO07NOV]挤奶的时间Milking Time
https://daniu.luogu.org/problemnew/show/2889 按右端点从小到大排序后DP dp[i] 到第i个时间段的最大产奶量 不能按左端点排序,第i段由第j段更新时,第 ...
- 题解 最优的挤奶方案(Optimal Milking)
最优的挤奶方案(Optimal Milking) 时间限制: 1 Sec 内存限制: 128 MB 题目描述 农场主 John 将他的 K(1≤K≤30)个挤奶器运到牧场,在那里有 C(1≤C≤20 ...
- dp专题练习
顺便开另外一篇放一些学过的各种dp dp总结:https://www.cnblogs.com/henry-1202/p/9194066.html 开坑先放15道题,后面慢慢补 目标50道题啦~~,目前 ...
- Milking Cows 挤牛奶
1.2.1 Milking Cows 挤牛奶 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 554 Solved: 108[Submit][Status ...
- 【POJ - 3616】Milking Time(动态规划)
Milking Time 直接翻译了 Descriptions 贝茜是一个勤劳的牛.事实上,她如此专注于最大化她的生产力,于是她决定安排下一个N(1≤N≤1,000,000)小时(方便地标记为0. ...
- USACO Section1.2 Milking Cows 解题报告
milk2解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- poj 3616 Milking Time (基础dp)
题目链接 http://poj.org/problem?id=3616 题意:在一个农场里,在长度为N个时间可以挤奶,但只能挤M次,且每挤一次就要休息t分钟: 接下来给m组数据表示挤奶的时间与奶量求最 ...
随机推荐
- CF 55 D. Beautiful numbers
D. Beautiful numbers 链接 题意: 求[L,R]中多少个数字可以整除它们的每一位上的数字. 分析: 要求模一些数字等于0等价于模它们的lcm等于0,所以可以记录当前出现的数字的lc ...
- CSS快速入门-前端布局2(唯品会1)
上一篇我模仿了抽屉网站,这一节我来对唯品会主页进行模仿. 我觉得写一个主页大概思路如下: 1.确定整体布局方式:(html框架布局) 2.针对每一块进行细化,尽量做到模块化.(css) 3.加上特效效 ...
- 取两张mysql表中分别两个字段相同的值
看起来有点绕口吧,举个例子吧,如图 两张表,字段名也不同字段gs 和另一张表 gsmc 的有些值是相同的 我们要做的就是把这个相同的值找出来 会写这个sql语句就可以 只写重点 $sql2 = &q ...
- 面向 Kubernetes 编程: Kubernetes 是下一代操作系统
转自:https://github.com/answer1991/articles/blob/master/Kubernetes-is-the-next-generation-os.md 摘要 此文章 ...
- PHP学习 Object Oriented 面向对象 OO
定义类class class_name [extends partclass_name]{public private protected var property_name = value;publ ...
- Ajax实例OR技术原理 转自 (http://blog.csdn.net/evankaka )
摘要:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用于创建快速动态网页的 ...
- Practice1小学四则运算(改进)
#include<stdio.h> #include<stdlib.h> #include<time.h> void srand(unsigned);//随机生成不 ...
- 软件工程作业 - Week 1
构建之法读后疑问: 初步的完成构建程序设计思路之后实现过程中发现了问题或者可以优化的地方是立马就改进还是完成之后按照步骤统一进行优化. 覆盖性测试,针对一些永远用不到只是用来预防极为极端的情况下,例如 ...
- ipmitool+python应用处理大量带外地址
ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息.显示系统日志 ...
- 【python】自学笔记
参考文献 1.环境安装 1.1 python 工作环境 2.7.14 1.2 pycharm community2018.1.1 4 x64 2.第一行代码 2.1 python交互模式, >& ...