Codeforces 158E Phone Talks:dp
题目链接:http://codeforces.com/problemset/problem/158/E
题意:
你有n个电话要接,每个电话打进来的时刻为第t[i]分钟,时长为d[i]分钟。
每一个电话打进来时,你有两种选择:
将电话挂掉,或接听(如果当时正在打其他电话,则这个电话加入等待队列,等上一个电话打完后立马接听)
你最多能挂掉k个电话。
时间从第1分钟开始算,一直到86400分钟结束,问你能够获得的最长连续间隔为多长时间。
题解:
表示状态:
dp[i][j] = clocks
表示打了前i个电话,挂掉了其中j个电话,打完这些电话的最早时刻。
找出答案:
有一个贪心结论,就是这k次挂电话的机会必须用完。
特别地,t[n+1] = 86401。
ans = min t[i+1]-dp[i][k]-1
如何转移:
dp[i][j] = min( max(dp[i-1][j]+d[i],t[i]+d[i]-1), dp[i-1][j-1] )
对于第i个电话,要么接,要么不接。
如果接,则第i个电话开始的时刻为max(dp[i-1][j]+1, t[i]),所以结束时刻为max(dp[i-1][j]+d[i],t[i]+d[i]-1)。
如果不接,则最后时刻还是dp[i-1][j-1]。
边界条件:
dp[0][0] = 0
others = INF
另外,当n == 0时要特判,直接输出86400即可。
AC Code:
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 4005
#define MAX_K 4005 using namespace std; int n,k;
int t[MAX_N];
int d[MAX_N];
int dp[MAX_N][MAX_K]; void read()
{
cin>>n>>k;
for(int i=;i<=n;i++)
{
cin>>t[i]>>d[i];
}
t[n+]=;
} void work()
{
if(n==)
{
cout<<""<<endl;
return;
}
memset(dp,0x3f,sizeof(dp));
dp[][]=;
for(int i=;i<=n;i++)
{
for(int j=;j<=min(i,k);j++)
{
dp[i][j]=max(dp[i-][j]+d[i],t[i]+d[i]-);
if(j>) dp[i][j]=min(dp[i][j],dp[i-][j-]);
}
}
int ans=;
for(int i=;i<=n;i++)
{
ans=max(ans,t[i+]-dp[i][k]-);
}
cout<<ans<<endl;
} int main()
{
read();
work();
}
Codeforces 158E Phone Talks:dp的更多相关文章
- Codeforces 893E Counting Arrays:dp + 线性筛 + 分解质因数 + 组合数结论
题目链接:http://codeforces.com/problemset/problem/893/E 题意: 共q组数据(q <= 10^5),每组数据给定x,y(x,y <= 10^6 ...
- codeforces E. Phone Talks(dp)
题目链接:http://codeforces.com/contest/158/problem/E 题意:给出一些电话,有打进来的时间和持续的时间,如果人在打电话,那么新打进来的电话入队,如果人没有打电 ...
- Codeforces 158E Phone Talks
http://codeforces.com/contest/158/problem/E 题目大意: 麦克是个名人每天都要接n电话,每通电话给出打来的时间和持续时间,麦克可以选择接或不接,但是只能不接k ...
- Codeforces 478D Red-Green Towers:dp
题目链接:http://codeforces.com/problemset/problem/478/D 题意: 给你r个红方块和g个绿方块,让你用这些方块堆一个塔. 最高层有1个方块,每往下一层块数+ ...
- Codeforces 429B Working out:dp【枚举交点】
题目链接:http://codeforces.com/problemset/problem/429/B 题意: 给你一个n*m的网格,每个格子上有一个数字a[i][j]. 一个人从左上角走到右下角,一 ...
- Codeforces 895C Square Subsets:状压dp【组合数结论】
题目链接:http://codeforces.com/problemset/problem/895/C 题意: 给你n个数a[i].(n <= 10^5, 1 <= a[i] <= ...
- CodeForces 163A Substring and Subsequence dp
A. Substring and Subsequence 题目连接: http://codeforces.com/contest/163/problem/A Description One day P ...
- CodeForces 149D Coloring Brackets 区间DP
http://codeforces.com/problemset/problem/149/D 题意: 给一个给定括号序列,给该括号上色,上色有三个要求 1.只有三种上色方案,不上色,上红色,上蓝色 2 ...
- Educational Codeforces Round 63-D(基础DP)
题目链接:https://codeforces.com/contest/1155/problem/D 题意:给定n个数,可以选择一段连续子段将其乘x,也可以不操作,求最大连续子段和. 思路:比赛时觉得 ...
随机推荐
- oracle、MySQL、SQL Server的比较
MySql的优点:1 MYSQL支持5000万条记录的数据仓库(3.x版本就支持了) 2 MYSQL适应所有平台 . 3 MYSQL是开源软件,开源的东西似乎总是比较实在一点,不会有太多商业化的考虑. ...
- postman 测试API - 获取/调用 token
1.使用全局变量保存token 2.再调用 参考文章 http://www.jianshu.com/p/13c8017bb5c8 https://testerhome.com/topics/6555
- git 常用使用命令
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html http://www.open-open.com/lib/view/open14 ...
- XtraBackup全备与增量备份
一.XtraBackup安装 下载地址:http://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/source/ 安装步骤: ===== ...
- PHP-Manual的学习----【语言参考】----【类型】-----【Resource 资源类型】
2017年8月24日11:29:361.资源 resource 是一种特殊变量,保存了到外部资源的一个引用.资源是通过专门的函数来建立和使用的.2.由于资源类型变量保存有为打开文件.数据库连接.图形画 ...
- Http权威指南学习研究
学习时间: 该学习:第六章 6.6小节 加油 185页 2017年5月15日15:13:00 今天任务: 看完前两章节: ...
- app 之间发送文件 ios
本文转载至 http://www.51094.com/?p=212 第一种: 发送一个正常的 pdf 文件,只要是能读取pdf 的都能得到响应 -(IBAction)openDocumentIn ...
- 浅谈<持续集成、持续交付、持续部署>(二)
集成是指软件个人研发的部分向软件整体部分交付,以便尽早发现个人开发部分的问题:部署是代码尽快向可运行的开发/测试节交付,以便尽早测试:交付是指研发尽快向客户交付,以便尽早发现生产环境中存在的问题.如果 ...
- 九度OJ 1344:可乐瓶展览 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:430 解决:76 题目描述: 众所周知JOBDU旗下的JOBCOLA公司是文明全球的著名可乐制造商,与其它可乐公司不同的是,JOBCOLA可 ...
- The space of such functions is known as a reproducing kernel Hilbert space.
Reproducing kernel Hilbert space Mapping the points to a higher dimensional feature space http://www ...