题目

给定 \(n\) 个区间 \([a_i, b_i]\), 花费为 \(c_i\), 求覆盖 \([L, R]\) 区间的所有整数的最小花费. \(0\le n \le 10^4, 0\le L,R\le 86399\)

分析

一道很水的题目.

设 \(f(i)\) 代表目前选择了第 \(i\) 个区间, 且第 \(i\) 个区间以前的的所有数都选择到了.

易得:

\[f(i) = \min_{b_j > a_i, b_i < b_j} f(j) + c_i
\]

一看, 这不就是裸的二维偏序 (其实我并不知道二维偏序的定义是啥).

先把区间按 \(b_i\) 排序, 得到:

\[f(i) = \min_{b_j > a_i} f(j) + c_i
\]

显然有:

\[b_j > a_i \Rightarrow X-b_j < X-a_i
\]

其中 \(X\) 随便取一个较大的值.

发现这个东西只做了单点减少和前缀最小值.

可以用树状数组维护, 时间复杂度 \(O(R\log n)\).

\(92\ ms\) 就过了.

代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> const int kMaxSize = 1e6 + 5, inf = 0x3f3f3f3f; int s[kMaxSize + 233], n; void Modify(int x, int y) {
x = kMaxSize - x;
while(x <= kMaxSize) {
s[x] = std::min(s[x], y);
x += x & -x;
}
} int Query(int x) {
x = kMaxSize - x;
int ret = inf;
while(x > 0) {
ret = std::min(s[x], ret);
x -= x & -x;
}
return ret;
} struct Struct {
int a, b, c;
} p[kMaxSize]; bool cmp(Struct x, Struct y) {
return x.b < y.b;
} int f[kMaxSize], ans = inf;
int main() {
memset(s, 0x3f, sizeof(s));
memset(f, 0x3f, sizeof(f));
int l, r;
scanf("%d%d%d", &n, &l, &r);
for(int i = 1; i <= n; i++)
scanf("%d%d%d", &p[i].a, &p[i].b, &p[i].c);
std::sort(p + 1, p + n + 1, cmp);
for(int i = 1; i <= n; i++) {
if(p[i].a > l) f[i] = Query(p[i].a - 1) + p[i].c;
else f[i] = p[i].c;
Modify(p[i].b, f[i]);
if(p[i].b >= r) ans = std::min(ans, f[i]);
}
if(ans >= inf) printf("-1");
else printf("%d", ans);
return 0;
}

【Luogu P4644】Cleaning Shifts的更多相关文章

  1. 【POJ - 2376】Cleaning Shifts(贪心)

    Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) ...

  2. 【Luogu 3275】[SCOI2011]糖果

    Luogu P3275 显然是一道经典的差分约束系统 相关知识可以查看:[Luogu 1993]差分约束系统问题--小K的农场 值得注意的是这题使用最长路更合适,因为每一个人都要取得至少一个糖果.在添 ...

  3. 【Luogu P2515】软件安装

    Luogu P2515 这道题的题面与P2146有点像.一些不同地方就是P2146是无环的,这题是有环的. 很显然,如果有几个软件的依赖关系形成环,那么这几个软件就可以被看成是一个大软件,其价值和空间 ...

  4. 【Luogu P3388】割点模板

    Luogu P3388 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多,就称这个点集为割点集合. 如果某个割点集合只含有一个顶点X(也即{X ...

  5. 【Luogu P1981】表达式求值

    点我进入原题Luogu P1981 [解题思路] 仔细分析题目,这就是一道模拟题…… 直接按照符号读入全部的数字,先算乘法,最后把全部数加起来就是结果了 记得要%10000取最后四位 [参考程序] # ...

  6. 【Luogu P1164】小A点菜

    题目原链接: Luogu 小A点菜 [解题思路] 常规的0-1背包,不过是求装满整个背包的方案数,只要把0-1背包的状态转移方程稍微改一下就行.因为要求方案数,那么把方程中的max换成sum就行. [ ...

  7. 【Luogu P2563】【集训Day 4 动态规划】质数和分解

    题目链接:Luogu P2563 质数和分解(prime) [问题描述] 任何大于 1 的自然数 N,都可以写成若干个大于等于2且小于等于 N 的质数之和表达式(包括只有一个数构成的和表达式的情况), ...

  8. 【Luogu P1090】合并果子

    Luogu P1090 [解题思路] 刚看到这题的时候,第一反应就是每次取两个最小,然后重新排序,再取最小.但是这样会TLE. 既然找最小的,那就可以利用单调队列了.显然输入的数据是不具有单调性的,但 ...

  9. 【POJ 2823】【Luogu P1886】Sliding Window 滑动窗口

    POJ 2823 Luogu P1886 [解题思路] 这是一个单调队列算法的经典题目,几乎学习单调队列的人都接触过这题. 利用单调队列算法求出每一个固定区间内的最(大/小)值. 以下以最大值为例: ...

随机推荐

  1. com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭

    com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭 解决方案: DBUtil公共方法如下: package ...

  2. HttpHandler使用Session

    继承自IHttpHandler的类要实现两个接口:ProcessRequest和IsReusable但还不能使用Session,要使用Session需要下面的步骤处理: 1.先引用System.Web ...

  3. TDD: 解除依赖

    1  A类依赖B 类,可以把B类提取成IB接口,解除AB 之间的依赖关系. 通过创建实现了IB接口的BStub 装代码,可以模拟B类进行测试. 这是针对接口编程的典型.适合构造代价大,变化多的情况.应 ...

  4. 与select2有关的知识点总结

    1.多选下拉框设置提示 var datass = [ { id:0, text: '你好' }, { id:1, text: '好久不见' }, { id:2, text: '好想你' } ]; va ...

  5. 涉及JSP、Servlet的页面编码问题

    1. JSP页面中,二处的字符编码有何区别 1.<%@ page contentType="text/html;charset=UTF-8" %> 是服务器端java程 ...

  6. RMAN备份与恢复(三)--备份相关概念

    (1)备份对象 可以使用RMAN进行的备份对象如下: --整个数据库:备份所有的数据文件和控制文件: --数据文件:备份指定的一个或多个数据文件: --表空间:备份指定的一个或多个表空间: --归档重 ...

  7. zepto 基础知识(3)

    41.height height() 类型:number height(value) 类型:self height(function(index,oldHeight){...}) 类型:self 获取 ...

  8. 解读JavaScript中的Hoisting机制(js变量声明提升机制)

    hoisting机制:javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 知识点一:javascript是没有 ...

  9. Javascript的加载

    最新博客站点:欢迎来访 1. 浏览器加载     (1) 同步加载 在网页中,浏览器加载js文件的方式是通过<script>标签.如下所示: //内嵌脚本 <script type= ...

  10. Ubuntu 16.04 Server 版安装过程图文详解

    进入系统安装的第一个界面,开始系统的安装操作.每一步的操作,左下角都会提示操作方式!! 1.选择系统语言-English 2.选择操作-Install Ubuntu Server 3.选择安装过程和系 ...