【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 [解题思路] 这是一个单调队列算法的经典题目,几乎学习单调队列的人都接触过这题. 利用单调队列算法求出每一个固定区间内的最(大/小)值. 以下以最大值为例: ...
随机推荐
- LA 2038 最少点覆盖
题目链接:https://vjudge.net/problem/UVALive-2038 题意:我看了原题,lrj的书上题意写错了,应该是最少点覆盖,当然可以用最大匹配去做,由于是树形的: 可以树形D ...
- 【luogu P3376 网络最大流】 模板
题目链接:https://www.luogu.org/problemnew/show/P3376 #include <iostream> #include <cstdio> # ...
- Storm处理流程, 基本参数配置
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAksAAAG/CAYAAABIVpOQAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF
- 理解 ES6 Generator-next()方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用Python对MySQL数据库操作
本文介绍Python3使用PyMySQL连接数据库,并实现简单的增删改查. 什么是PyMySQL? PyMySQL是Python3.x版本中用于连接MySQL服务器的一个库,Python2.x中则使用 ...
- 高级同步器:信号量Semaphore
引自:https://blog.csdn.net/Dason_yu/article/details/79734425 一.信号量一个计数信号量.从概念上讲,信号量维护了一个许可集.Semaphore经 ...
- mongodb的windows系统下安装
先下载安装包,地址有下面两个,按需选择吧. https://www.mongodb.com/download-center/v2/community https://www.mongodb.org/d ...
- you don't have permission to access forbidden
前几天装一个phpStudy 集成环境,打开测试页面的时候突然出现如下错误: 有一些小总结. 一些小的开发测试在本地开发的话,直接localhost/file 就可以, 如果涉及到大的开发环境,一 ...
- ecshop 全系列版本网站漏洞 远程代码执行sql注入漏洞
ecshop漏洞于2018年9月12日被某安全组织披露爆出,该漏洞受影响范围较广,ecshop2.73版本以及目前最新的3.0.3.6.4.0版本都受此次ecshop漏洞的影响,主要漏洞是利用远程代码 ...
- DHT11温湿度传感器编程思路以及代码的实现(转载)
源自:https://blog.csdn.net/qq_34952376/article/details/81193938 在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推 ...