简单入门版:洛谷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. Shell之历史操作记录与欢迎信息

    history: ~/.bash_history:用于记录所有的操作记录 欢迎信息:/etc/issue,只对本地登录生效. 远程终端的欢迎信息:/etc/issue.net

  2. animation steps属性实现帧动画

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...

  3. sql 逻辑运算符 优先级

    SELECT * FROM tl_documentation WHERE storehouse_id =2 OR customer_id =2 AND product_id =20 ORDER BY  ...

  4. Asterisk func group

    Synopsis Gets, sets or clears the channel group. Each channel can only be member of exactly one grou ...

  5. 快速沃尔什变换(FWT)学习笔记 + 洛谷P4717 [模板]

    FWT求解的是一类问题:\( a[i] = \sum\limits_{j\bigoplus k=i}^{} b[j]*c[k] \) 其中,\( \bigoplus \) 可以是 or,and,xor ...

  6. android实例3:拖动条

    个人网站http://www.ravedonut.com/ 拖动条改变图片的透明度 xml <LinearLayout xmlns:android="http://schemas.an ...

  7. SetConsoleCtrlHandler() -- 设置控制台信号处理函数

    http://www.groad.net/bbs/thread-8253-1-1.html 当你在命令行里工作时,经常会输入 Ctrl-C 这个组合键以停止程序的运行.SetConsoleCtrlHa ...

  8. c++函数模板二栈实现

    1 没有使用模板的栈实现 #include <iostream> #include <string> using namespace std; class Stack { pu ...

  9. ThinkPHP3.2.3中,查询语句中in的使用方法。

    //删除分类 public function del(){ $cid = I('get.cid'); $cate = M('category')->field('cid,pid')->se ...

  10. 细说CSS中的display属性

    相信大部分奋战在前端的,尤其在前端攻城的过程中,有一种越陷越深的感觉,不错,一如前端深似海,从此妹子是浮云啊,前端上手容易,深入难啊!下面我就CSS中的display属性讲下我自己所积累的,与大家共享 ...