简单入门版:洛谷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)的更多相关文章

  1. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  2. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  3. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  4. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  5. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  6. Tour(dp)

    Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...

  7. 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

    .navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...

  8. Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)

    Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...

  9. 最长公共子序列长度(dp)

    /// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...

随机推荐

  1. 基于sys文件系统的LED驱动的移植【原创】

    基于RK3188平台LED驱动程序的移植的移植.如有不正确之处,欢迎大家指点. 本文的LED驱动程序不是通过打开设备节点来访问和控制LED的,是通过sys文件系统来控制LED. 板子上有四盏灯以及对应 ...

  2. Codeforces Round #173 (Div. 2) E. Sausage Maximization —— 字典树 + 前缀和

    题目链接:http://codeforces.com/problemset/problem/282/E E. Sausage Maximization time limit per test 2 se ...

  3. ansible-playbook unarchive模块

    先 进行  pause模块的 记录: pause 在playbook执行的过程中暂停一定时间或者提示用户进行某些操作 常用参数: minutes:暂停多少分钟 seconds:暂停多少秒 prompt ...

  4. 阿里云数据库产品HybridDB简介——OLAP数据库,支持行列混合存储,基于数据库Greenplum的开源版本,并且吸收PostgreSQL精髓

    为什么会有HybridDB的诞生?它经历了怎样的研发历程?它的应用场景和情况是怎样的?带着这些问题,InfoQ对阿里云的数据库专家兼Postgres中国社区/中国用户会主席萧少聪先生进行了采访,以下文 ...

  5. RTMP协议的理解

    RTMP协议:real time message protocol 工作原理: 先采集摄像头视频和麦克风音频信息,再进行音视频的编码(mpeg),通过FMLE(Flash Media Live Enc ...

  6. 如何配置xmanager

      步骤1:编辑/etc/X11/xdm/Xaccess,将下面的行:  #* # any host can get a login window 改为: * # any host can get a ...

  7. Swift初见

    Swift基本类型 Swift的类型是在C和OC的基础上发展而来的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.类似OC,Swift也提出了三个集合类型:A ...

  8. bzoj3625

    fft 分治虽然是万能的,但是太慢了 分治是nlog^2n的,太慢了,于是我们用求逆和开根 设f(x)表示答案为x的方案数 c表示物品的生成函数 那么f=f*f*c+1 f*f表示左右儿子的方案数 c ...

  9. EF之贪婪加载和延迟加载

    这篇文章将讨论查询结果的控制 在使用EF(Entity Framework)的过程中,很多时候我们会进行查询的操作,因此知道哪些数据会被加载到内存当中就至关重要.在多多的情况下,你可能并并不需要加载全 ...

  10. awk里面执行shell命令

    先把文件列表存在filename文件中 先 awk '{system("rm $0")}' filename -------WRONG 因为对于 system来说 $0 不再是某行 ...