[USACO2007NOVS] Milking Time S
题目描述
Bessie 可以在接下来 \(N\) 个小时内产奶,为了方便,我们把这 \(N\) 个小时 \(0\dots N-1\) 编号。
FJ 在这 \(N\) 个小时内有 \(M\) 段时间可以来给 Bessie 挤奶,第 \(i\) 段时间从 \(Start_i\) 开始到 \(End_i\) 结束,可以得到 \(Eff_i\) 加仑牛奶。
每次 FJ 给 Bessie 挤奶之后,Bessie 都要休息 \(R\) 个小时,FJ 才能开始下一次挤奶。
现在,FJ 需要您计算出 Bessie 在这 \(N\) 个小时内最多产多少奶。
输入格式
第一行有三个整数,分别表示 \(N,M,R\)。
第 \(2\dots M+1\) 行,第 \(i+1\) 行有三个整数 \(Start_i,End_i,Eff_i\),描述一段挤奶的时间。
输出格式
输出一行一个整数表示答案。
样例 #1
样例输入 #1
12 4 2
1 2 8
10 12 19
3 6 24
7 10 31
样例输出 #1
43
提示
数据规模与约定
对于全部的测试点,保证 \(1\le N\le 10^6\),\(1\le M\le 10^3\),\(1\le Start_i<end_i\le N\),\(1\le Eff_i\le 10^6\)。
先考虑最基础的暴力。每次考虑一个区间选不选,如果选,那么下一个区间的开头要和这一个区间隔至少r,否则不变。
复杂度\(O(2^n)\)。我们可以将所有的区间按照右端点排序,然后每次记录上一个区间末尾,选的时候判断差距是否大于r即可。
暴力中记录两个量,一个是上一个区间末尾,一个是现在到了第几个区间。
考虑怎样记忆化。容易发现我们可以将所有左端点和右端点+r离散化,然后就把左右端点范围缩在了m的级别。然后搜索时记录两个量,一个是到了第几个区间,一个是上一个区间右端点+r离散化的位置。如果这个位置l离散化大于等于上一个区间右端点+r的位置,那就可以选这个区间。
#include<bits/stdc++.h>
using namespace std;
const int M=1e3+5;
int n,m,r,ans,dp[M][M*3],lsh[M*2];
struct node{
int l,r,t;
bool operator<(const node&n)const{
return r<n.r;
}
}d[M];
int dfs(int x,int y)
{
if(x>m)
return 0;
if(dp[x][y]!=-1)
return dp[x][y];
int ret=0,
a=lower_bound(lsh+1,lsh+2*m+1,d[x].l)-lsh,
b=lower_bound(lsh+1,lsh+2*m+1,d[x].r+r)-lsh;
if(a>=y)
ret=dfs(x+1,b)+d[x].t;
ret=max(ret,dfs(x+1,y));
return dp[x][y]=ret;
}
int main()
{
memset(dp,-1,sizeof(dp));
scanf("%d%d%d",&n,&m,&r);
for(int i=1;i<=m;i++)
scanf("%d%d%d",&d[i].l,&d[i].r,&d[i].t),lsh[2*i-1]=d[i].r+r,lsh[2*i]=d[i].l;
sort(d+1,d+m+1);
sort(lsh+1,lsh+2*m+1);
printf("%d",dfs(1,0));
return 0;
}
[USACO2007NOVS] Milking Time S的更多相关文章
- POJ2455Secret Milking Machine[最大流 无向图 二分答案]
Secret Milking Machine Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11865 Accepted ...
- Milking Cows
Milking Cows Three farmers rise at 5 am each morning and head for the barn to milk three cows. The f ...
- POJ 2185 Milking Grid KMP(矩阵循环节)
Milking Grid Time Limit: 3000MS Memory Lim ...
- Optimal Milking 分类: 图论 POJ 最短路 查找 2015-08-10 10:38 3人阅读 评论(0) 收藏
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 13968 Accepted: 5044 Case ...
- POJ2112 Optimal Milking (网络流)(Dinic)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K T ...
- 洛谷P1204 [USACO1.2]挤牛奶Milking Cows
P1204 [USACO1.2]挤牛奶Milking Cows 474通过 1.4K提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 请各位帮忙看下程序 错误 ...
- 【USACO】Milking Cows
Three farmers rise at 5 am each morning and head for the barn to milk three cows. The first farmer b ...
- POJ 2185 Milking Grid(KMP)
Milking Grid Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 4738 Accepted: 1978 Desc ...
- poj 3616 Milking Time
Milking ...
- codeforce ---A. Milking cows
A. Milking cows time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
随机推荐
- 【pandas小技巧】--统计值作为新列
这次介绍的小技巧不是统计,而是把统计结果作为新列和原来的数据放在一起.pandas的各种统计功能之前已经介绍了不少,但是每次都是统计结果归统计结果,原始数据归原始数据,没有把它们合并在一个数据集中来观 ...
- 52条SQL语句,性能优化!
52条SQL语句,性能优化! SQL语句性能优化 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对 ...
- 原来你是这样的SpringBoot--初识SpringBootAdmin
简介 Spring Boot Admin(SBA)是一个针对spring-boot的actuator接口进行UI美化封装的监控工具.它可以:在列表中浏览所有被监控spring-boot项目的基本信息, ...
- JSTL fn函数使用
首先,我们要在页面的最上方引用: <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/function ...
- 2.12 PE结构:实现PE字节注入
本章笔者将介绍一种通过Metasploit生成ShellCode并将其注入到特定PE文件内的Shell注入技术.该技术能够劫持原始PE文件的入口地址,在PE程序运行之前执行ShellCode反弹,执行 ...
- 分布式环境下Session共享问题解决和原理讲解
1.分布式环境下Session共享问题: 2.几种解决方法 3.通过后端统一存储方法在实际项目中问题的体现: 当session的作用域只限于auth.gulimall.com时,在auth.gulim ...
- Java并发Map的面试指南:线程安全数据结构的奥秘
简介 在计算机软件开发的世界里,多线程编程是一个重要且令人兴奋的领域.然而,与其引人入胜的潜力相伴而来的是复杂性和挑战,其中之一就是处理共享数据.当多个线程同时访问和修改共享数据时,很容易出现各种问题 ...
- 文心一言 VS 讯飞星火 VS chatgpt (96)-- 算法导论9.3 1题
一.用go语言,在算法 SELECT 中,输人元素被分为每组 5 个元素.如果它们被分为每组 7个元素,该算法仍然会是线性时间吗?证明:如果分成每组 3 个元素,SELECT 的运行时间不是线性的. ...
- Linux/Unix-CPU-SuperPI-Unixbench性能测试
测试服务器CPU单核及多核SuperPI圆周率测试real和user值,SuperPI是利用CPU的浮点运算能力来计算出π(圆周率),测试系统稳定性和测试CPU计算完后特定位数圆周率所需的时间:及Un ...
- #POWERBI_指标监控(第二部分,周期内下降天数及日期明细)
在指标监控的第一部分文章中,我们已经讲了,如何用DAX去查询一段周期内连续下降或者上升指标. 需要复习的同学可以点击下方链接: https://www.cnblogs.com/simone331/p/ ...