codeforces E. Phone Talks(dp)
题目链接:http://codeforces.com/contest/158/problem/E
题意:给出一些电话,有打进来的时间和持续的时间,如果人在打电话,那么新打进来的电话入队,如果人没有打电话,那么人必须立即接电话,或者选择一次放弃的机会,问这个最多有多长的连续的空闲的时间。
题解:按照套路最长一般都是依靠dp来求解或者贪心。然后由于数据也就4000所以不难想到设
dp[i][j]表示处理到第i个电话时,无视了j个电话之后最短的结束时间,于是转移方程如下:
dp[i][j] = min(dp[i - 1][j - 1] , max(dp[i - 1][j] , t[i] - 1) + d[i]);要么就无视当前电话,
要么接听当前电话。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int M = 4e3 + 10;
int t[M] , d[M] , dp[M][M];
int main() {
int n , k;
scanf("%d%d" , &n , &k);
for(int i = 1 ; i <= n ; i++) {
scanf("%d%d" , &t[i] , &d[i]);
}
dp[0][0] = 0;
for(int i = 1 ; i <= n ; i++) {
dp[i][0] = max(t[i] - 1 , dp[i - 1][0]) + d[i];
for(int j = 1 ; j <= k && j <= i ; j++) {
dp[i][j] = min(dp[i - 1][j - 1] , max(dp[i - 1][j] , t[i] - 1) + d[i]);
}
}
int ans = t[1] - 1;
for(int i = 1 ; i <= n ; i++) {
for(int j = 0 ; j <= k && j < i ; j++) {
ans = max(ans , t[i] - dp[i - 1][j] - 1);
}
}
for(int j = 0 ; j <= k ; j++) {
ans = max(ans , 86400 - dp[n][j]);
}
printf("%d\n" , ans);
return 0;
}
codeforces E. Phone Talks(dp)的更多相关文章
- Codeforces Gym101341K:Competitions(DP)
		http://codeforces.com/gym/101341/problem/K 题意:给出n个区间,每个区间有一个l, r, w,代表区间左端点右端点和区间的权值,现在可以选取一些区间,要求选择 ... 
- codeforces 711C Coloring Trees(DP)
		题目链接:http://codeforces.com/problemset/problem/711/C O(n^4)的复杂度,以为会超时的 思路:dp[i][j][k]表示第i棵数用颜色k涂完后bea ... 
- codeforces#1154F. Shovels Shop (dp)
		题目链接: http://codeforces.com/contest/1154/problem/F 题意: 有$n$个物品,$m$条优惠 每个优惠的格式是,买$x_i$个物品,最便宜的$y_i$个物 ... 
- Codeforces 1051 D.Bicolorings(DP)
		Codeforces 1051 D.Bicolorings 题意:一个2×n的方格纸,用黑白给格子涂色,要求分出k个连通块,求方案数. 思路:用0,1表示黑白,则第i列可以涂00,01,10,11,( ... 
- Codeforces 1207C  Gas Pipeline (dp)
		题目链接:http://codeforces.com/problemset/problem/1207/C 题目大意是给一条道路修管道,相隔一个单位的管道有两个柱子支撑,管道柱子高度可以是1可以是2,道 ... 
- Codeforces 704C - Black Widow(dp)
		Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉这种题被评到 *2900 是因为细节太繁琐了,而不是题目本身的难度,所以我切掉这种题根本不能说明什么-- 首先题目中有一个非 ... 
- Codeforces 682B New Skateboard(DP)
		题目大概说给一个数字组成的字符串问有几个子串其代表的数字(可以有前导0)能被4整除. dp[i][m]表示字符串0...i中mod 4为m的后缀的个数 通过在i-1添加str[i]字符转移,或者以st ... 
- Codeforces 543D Road Improvement(DP)
		题目链接 Solution 比较明显的树形DP模型. 首先可以先用一次DFS求出以1为根时,sum[i](以i为子树的根时,满足要求的子树的个数). 考虑将根从i变换到它的儿子j时,sum[i]产生的 ... 
- Codeforces 543C Remembering Strings(DP)
		题意比较麻烦 见题目链接 Solution: 非常值得注意的一点是题目给出的范围只有20,而众所周知字母表里有26个字母.于是显然对一个字母进行变换后是不影响到其它字符串的. 20的范围恰好又是常见状 ... 
随机推荐
- python 获取大乐透中奖结果
			实现思路: 1.通过urllib库爬取http://zx.500.com/dlt/页面,并过滤出信息 2.将自己的买的彩票的号与开奖号进行匹配,查询是否中奖 3.将中奖结果发生到自己邮箱 caipia ... 
- java-web调用后台下载方法
			后台下载指定文件必定会用到流, 无论使用poi还是使用jxl导出excel都需要用到流一种是outputstrean,另一种fileoutputstream第一种:如果想要弹出保存的提示框必须加入下列 ... 
- 动态SQL查询
			if+where: 用于查询操作,where标签可以智能判断是否添加and.or.where关键词 示例: <select id="findByParam" resultTy ... 
- cookie session sessionStorage localStorage
			什么是会话? 会话指的是浏览器与服务器之间的数据交互.所白了就是 浏览器和服务器进行的请求和响应. http协议是无状态的,多次请求之间没有关联性 cookie和session的作用?干啥的? 利用c ... 
- 通过Blazor使用C#开发SPA单页面应用程序(2)
			今天我们尝试创建一个默认的Blazor应用. 1.安装 .Net Core 3.0需要Visual Studio 2019 的支持. 安装.Net Core 3.0 预览版 SDK版本,注意预览版对应 ... 
- git语句(后续补充)
			如果你是windows用户,需要下载一个git应用程序,一路点就行,没有什么需要注意的地方 安装完成后在任一文件夹内右键都有显示,单击git bash here即可 简易的命令行入门教程: Git 全 ... 
- linux之压缩和解压
			归档:也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中.归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和.压缩:压缩文件也是一个文件和目录的集合,且这个集合也被存 ... 
- AutoCAD二次开发(.Net)之获取LSP变量的值
			//https://blog.csdn.net/qq_21489689/article/details/78973787 [System.Security.SuppressUnmanagedCodeS ... 
- 关于c++中的复合类型
			目录 数组 字符串 结构体 共用体 枚举 指针 数和指针的关系 常见的存储方式 数组替代品 一.数组 存储在每个元素中值的类型 数组名 数组中的元素数 通用格式:typename arrayname ... 
- go 学习笔记之go是不是面向对象语言是否支持面对对象编程?
			面向对象编程风格深受广大开发者喜欢,尤其是以 C++, Java 为典型代表的编程语言大行其道,十分流行! 有意思的是这两中语言几乎毫无意外都来源于 C 语言,却不同于 C 的面向过程编程,这种面向对 ... 
