CF #536div2E(dp)
简单入门版:洛谷1280
时间交叉和倒序处理的思路是相同的,相较之下此题更多的条件是:1.每个任务可以在很多个时间点中选一个去做;2.会有捣乱。
解决方法:1.每个时间点选哪个根据规则的话是固定的可预处理,但这样会发现某一段时间都是选的那个最大的,然鹅实际上只能选一次对吧。但其实没问题,很难讲,总之冷却时间点大等于最后时间点这个条件保证了倒序处理时不会重复拿这个任务,倒序和能拿必拿这两点很关键。2.捣乱就比较常规的dp了,第一维时间点,第二维捣乱几次了,然后每层按照捣不捣乱转移。
主代码:
const int maxn = 1e5 + ;
int n, m, k;
ll dp[maxn][];
map<int, P> mp;
vector<P> st[maxn], ed[maxn];
multiset<P> s; int main() {
read(n), read(m), read(k);
rep(i, , k) {
int ast, aed, d, money;
read(ast), read(aed), read(d), read(money);
st[ast].push_back(P(-money, -d));
ed[aed + ].push_back(P(-money, -d));
}
rep(i, , n) {//预处理每个时间节点应该选择哪个任务
for (auto j : st[i]) s.insert(j);
for (auto j : ed[i]) s.erase(s.find(j));
if (s.size()) {
auto tmp = s.begin();
mp[i] = P(-tmp->first, -tmp->second);
}
} irep(x, n, ) {
//不捣乱
if (mp.count(x)) {
auto tmp = mp[x];
rep(i, , m)
dp[x][i] = dp[tmp.second + ][i] + tmp.first;
} else
rep(i, , m)
dp[x][i] = dp[x + ][i];
//捣乱
rep(i, , m) {
if (i) dp[x][i] = min(dp[x][i], dp[x + ][i - ]);
}
}
writeln(dp[][m]);//时间点1、已经捣乱m次
return ;
}
CF #536div2E(dp)的更多相关文章
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
- 最长公共子序列长度(dp)
/// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...
随机推荐
- linux内核驱动中对文件的读写 【转】
本文转载自:http://blog.chinaunix.net/uid-13059007-id-5766941.html 有时候需要在Linux kernel--大多是在需要调试的驱动程序--中读写文 ...
- BZOJ2120 数颜色 —— 待修改莫队
题目链接:https://vjudge.net/problem/HYSBZ-2120 2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: ...
- Telnet连接远程服务器
使用Telnet远程连接服务器端 现在大多数人使用win7系统.在win7系统中默认已经安装好了telnet服务,我们只需要从服务中将其打开即可, 步骤在首先打开控制面板-->卸载程序--> ...
- Opencv— — Pinch Filter
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...
- Centos 5.x 升级 python2.7,安装setuptools、mysqldb 完整记录
最近由于有个工作任务需要搭个虚拟机环境,但是环境是搭建在内网,无法直接联网,很多软件都不能直接yum安装, 安装过程实在十分不顺利,在此留个记录给有需要的朋友. 环境是 CentOS 5.7 x6 ...
- 「网络流24题」「LuoguP3358」 最长k可重区间集问题(费用流
题目描述 对于给定的开区间集合 I 和正整数 k,计算开区间集合 I 的最长 k可重区间集的长度. 输入输出格式 输入格式: 的第 1 行有 2 个正整数 n和 k,分别表示开区间的个数和开区间的可重 ...
- JAVA THINGKING (一)
保存数据位置: (1) 寄存器.这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部. (2) 堆栈.驻留于常规RAM(随机访问存储器)区域,这是一种特别快.特别有效的数据保存方式, ...
- 重载和const形参的学习心得
在C++ primer 5th中,第6章的练习6.39(a)中,关于重载和const形参的学习心得. 练习6.39:说明在下面的每组声明中第二条声明语句是何含义.如果有非法的声明,请指出来. (a) ...
- HDOJ-1021
Fibonacci Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Linux SecureCRT 完全破解
相关说明: 上篇发了个Linux(Ubuntu) 下 SecureCRT 7 30天循环破解在启动的时候会多输入一次确认窗口, 后来maz-1网友留言说可以用Windows破解后程序替换Linux下的 ...