【Luogu P4644】Cleaning Shifts
题目
给定 \(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\) 个区间以前的的所有数都选择到了.
易得:
\]
一看, 这不就是裸的二维偏序 (其实我并不知道二维偏序的定义是啥).
先把区间按 \(b_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的更多相关文章
- 【POJ - 2376】Cleaning Shifts(贪心)
Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) ...
- 【Luogu 3275】[SCOI2011]糖果
Luogu P3275 显然是一道经典的差分约束系统 相关知识可以查看:[Luogu 1993]差分约束系统问题--小K的农场 值得注意的是这题使用最长路更合适,因为每一个人都要取得至少一个糖果.在添 ...
- 【Luogu P2515】软件安装
Luogu P2515 这道题的题面与P2146有点像.一些不同地方就是P2146是无环的,这题是有环的. 很显然,如果有几个软件的依赖关系形成环,那么这几个软件就可以被看成是一个大软件,其价值和空间 ...
- 【Luogu P3388】割点模板
Luogu P3388 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多,就称这个点集为割点集合. 如果某个割点集合只含有一个顶点X(也即{X ...
- 【Luogu P1981】表达式求值
点我进入原题Luogu P1981 [解题思路] 仔细分析题目,这就是一道模拟题…… 直接按照符号读入全部的数字,先算乘法,最后把全部数加起来就是结果了 记得要%10000取最后四位 [参考程序] # ...
- 【Luogu P1164】小A点菜
题目原链接: Luogu 小A点菜 [解题思路] 常规的0-1背包,不过是求装满整个背包的方案数,只要把0-1背包的状态转移方程稍微改一下就行.因为要求方案数,那么把方程中的max换成sum就行. [ ...
- 【Luogu P2563】【集训Day 4 动态规划】质数和分解
题目链接:Luogu P2563 质数和分解(prime) [问题描述] 任何大于 1 的自然数 N,都可以写成若干个大于等于2且小于等于 N 的质数之和表达式(包括只有一个数构成的和表达式的情况), ...
- 【Luogu P1090】合并果子
Luogu P1090 [解题思路] 刚看到这题的时候,第一反应就是每次取两个最小,然后重新排序,再取最小.但是这样会TLE. 既然找最小的,那就可以利用单调队列了.显然输入的数据是不具有单调性的,但 ...
- 【POJ 2823】【Luogu P1886】Sliding Window 滑动窗口
POJ 2823 Luogu P1886 [解题思路] 这是一个单调队列算法的经典题目,几乎学习单调队列的人都接触过这题. 利用单调队列算法求出每一个固定区间内的最(大/小)值. 以下以最大值为例: ...
随机推荐
- 添加模糊效果demo
添加模糊效果demo: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...
- 学大伟业 Day 5 培训总结
今天讲数据结构 先从mzx大佬的ppt摘抄一段: 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 通常情况下,精心选择的数据结构可以带来更高的运行或 ...
- php如何实现登陆后返回原页面
访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面项目需求 访问网站页面时,有的页面需要授权才能访问,这时候就会要求 ...
- Mac使用GNU版本的sed
今天在mac下用sed试图替换\t ,结果发现不生效,Google之后发现mac作为unix分支的系统上的sed与GNU版本的sed行为不太一致. 使用以下命令安装GNU命令套件: brew inst ...
- Asset Store 下载的package存在什么地方?
发现从Asset store下载的packages都不知道放在了什么地方 Windows 7,C:\Users\<username>\AppData\Roaming\Unity\Asset ...
- Spring-Day02-依赖注入-作业
配置beans约束自动提示 spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html中打开xsd-configuratio ...
- iOS10 开发权限适配设置 崩溃(上传打包后构建版本一直不显示)
ios10 系统必须强制配置系统权限 如果不配置,调试的时候导致崩溃,还会引发包无效的问题,导致上传打包后构建版本一直不显示 解决方案1.在项目中找到info.plist文件,右键点击以 Source ...
- 编写可维护的JavaScript---事件处理
在JavaScript应用中事件处理是非常重要的,所有的JavaScript都是通过事件绑定到UI上的. 1. 典型用法 当事件触发的时候,事件对象event会最为回调参数传入到事件处理程序中.eve ...
- 【Nowcoder 上海五校赛】1 + 2 = 3?(斐波那契规律)
题目描述 小Y在研究数字的时候,发现了一个神奇的等式方程,他屈指算了一下有很多正整数x满足这个等式,比如1和2,现在问题来了,他想知道从小到大第N个满足这个等式的正整数,请你用程序帮他计算一下. (表 ...
- git设置.gitignore文件
.gitignore用来忽略某些git仓库中不需要上传到远程仓库的文件,例如target目录.下面说一下步骤. 1.在项目根目录中通过右键Git Bash,打开控制命令台,新建一个.gitignore ...