当前位置:网站首页>POJ - 3616 Milking Time(DP+LIS)
POJ - 3616 Milking Time(DP+LIS)
2022-07-07 05:27:00 【WA_自动机】
POJ - 3616 Milking Time
Description
Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that she decides to schedule her next N (1 ≤ N ≤ 1,000,000) hours (conveniently labeled 0…N-1) so that she produces as much milk as possible.
Farmer John has a list of M (1 ≤ M ≤ 1,000) possibly overlapping intervals in which he is available for milking. Each interval i has a starting hour (0 ≤ starting_houri ≤ N), an ending hour (starting_houri < ending_houri ≤ N), and a corresponding efficiency (1 ≤ efficiencyi ≤ 1,000,000) which indicates how many gallons of milk that he can get out of Bessie in that interval. Farmer John starts and stops milking at the beginning of the starting hour and ending hour, respectively. When being milked, Bessie must be milked through an entire interval.
Even Bessie has her limitations, though. After being milked during any interval, she must rest R (1 ≤ R ≤ N) hours before she can start milking again. Given Farmer Johns list of intervals, determine the maximum amount of milk that Bessie can produce in the N hours.
Input
- Line 1: Three space-separated integers: N, M, and R
- Lines 2…M+1: Line i+1 describes FJ’s ith milking interval withthree space-separated integers: starting_houri , ending_houri , and efficiencyi
Output
- Line 1: The maximum number of gallons of milk that Bessie can product in the N hours
Sample Input
12 4 2
1 2 8
10 12 19
3 6 24
7 10 31
Sample Output
43
牛在n时间内产奶,农夫有m段时间可以挤奶,每一段时间有开始点strat,结束点end,和这段时间的挤奶量w。 每一次挤奶后,牛都必须休息r时间。问在最合理的挤奶安排下挤到的最大牛奶量是多少?
首先按照结束时间排序区间,然后按照第i个区间选择与否进行动态规划
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1010;
struct Node
{
int l,r,val;
}a[N];
int dp[N];
bool cmp(Node A,Node B)
{
return A.r<B.r;
}
int main()
{
int n,m,r;cin>>n>>m>>r;
for(int i=1;i<=m;i++)
{
cin>>a[i].l>>a[i].r>>a[i].val;
a[i].r+=r;
}
sort(a+1,a+m+1,cmp);
for(int i=1;i<=m;i++)
{
dp[i]=a[i].val;
for(int j=1;j<i;j++)
if(a[j].r<=a[i].l)
dp[i]=max(dp[i],dp[j]+a[i].val);
}
int ans=0;
for(int i=1;i<=m;i++)
ans=max(ans,dp[i]);
cout<<ans<<endl;
return 0;
}
边栏推荐
- Using helm to install rainbow in various kubernetes
- Splunk查询csv lookup table数据动态查询
- Ebpf cilium practice (1) - team based network isolation
- IP-guard助力能源企业完善终端防泄密措施,保护机密资料安全
- Le système mes est un choix nécessaire pour la production de l'entreprise
- 漏洞复现-Fastjson 反序列化
- 归并排序和非比较排序
- DeiT学习笔记
- 利用 Helm 在各类 Kubernetes 中安装 Rainbond
- Transformation function map and flatmap in kotlin
猜你喜欢

Opencv learning note 4 - expansion / corrosion / open operation / close operation

解析创新教育体系中的创客教育

Using helm to install rainbow in various kubernetes

Opencv learning notes II - basic image operations

What is the function of paralleling a capacitor on the feedback resistance of the operational amplifier circuit

打通法律服务群众“最后一公里”,方正璞华劳动人事法律自助咨询服务平台频获“点赞”

Fluentd is easy to use. Combined with the rainbow plug-in market, log collection is faster

一文了解如何源码编译Rainbond基础组件

opencv学习笔记二——图像基本操作

使用BiSeNet实现自己的数据集
随机推荐
opencv学习笔记五——梯度计算/边缘检测
eBPF Cilium实战(1) - 基于团队的网络隔离
Ebpf cilium practice (2) - underlying network observability
Caractéristiques de bisenet
One click installation of highly available Nacos clusters in rainbow
Pvtv2--pyramid vision transformer V2 learning notes
利用 Helm 在各类 Kubernetes 中安装 Rainbond
Qinglong panel - today's headlines
Splunk子查询模糊匹配csv中字段值为*
Openjudge noi 2.1 1752: chicken and rabbit in the same cage
Vulnerability recurrence fastjson deserialization
解读创客思维与数学课程的实际运用
Make LIVELINK's initial pose consistent with that of the mobile capture actor
JS copy picture to clipboard read clipboard
机器人教育在动手实践中的真理
XCiT学习笔记
Bisenet features
Qinglong panel -- finishing usable scripts
Open3d ISS key points
漏洞複現-Fastjson 反序列化