xdoj-1324 (区间离散化-线段树求区间最值)
思想 : 1 优化:题意是覆盖点,将区间看成 (l,r)转化为( l-1,r) 覆盖区间
2 核心:dp[i] 覆盖从1到i区间的最小花费
dp[a[i].r]=min (dp[k])+a[i]s; l-1=<k<=r-1
(可我总是想着从后到前,从 前到后反而更好理解)
3 离散区间---使用线段树求区间最值 时间复杂度O(nlogn)
ps (一定忍住不看别人的代码,继续加油)
#include <bits/stdc++.h>
#define lson l,m,rt*2
#define rson m+1,r,rt*2+1
using namespace std;
typedef long long LL;
struct node {
LL l,r,s;
bool operator < (const node& t) const {
return r<t.r;
}
};
const int N=2e5+;
const int MAX=0x3f3f3f3f;
node a[N];
LL b[N]; int cnt;
int tree[N*];
int n; LL M,E;
LL ans;
inline void pushup (int rt) {
tree[rt]=min (tree[rt*],tree[rt*+]);
}
inline int mapp (LL x) {
return lower_bound(b+,b++cnt,x)-b;
}
void update (int p,int k,int l,int r,int rt) {
if (l==r) {
tree[rt]=min (k,tree[rt]);
return ;
}
int m=(l+r)/;
if (p<=m) update (p,k,lson);
else update (p,k,rson);
pushup(rt);
return ;
}
int query (int L,int R,int l,int r,int rt) {
if (l>=L&&r<=R) return tree[rt];
if (l>R||r<L) return MAX;
int m=(l+r)/;
return min (query(L,R,lson),query(L,R,rson));
}
int main ()
{
while (~scanf ("%d %lld %lld",&n,&M,&E)) {
cnt=;
for (int i=;i<=n;i++) {
scanf ("%lld %lld %lld",&a[i].l,&a[i].r,&a[i].s);
a[i].l--;
b[++cnt]=a[i].l; b[++cnt]=a[i].r;
}
sort (b+,b++cnt); cnt=;
for (int i=;i<=*n;i++)
if (b[i]!=b[cnt])
b[++cnt]=b[i]; if (b[]!=M-||b[cnt]!=E) ans=-;
else {
memset (tree,0x3f,sizeof(tree));
sort (a+,a++n);
update (,,,cnt,);
for (int i=;i<=n;i++) {
int r=mapp(a[i].r);
int l=mapp(a[i].l);
int tmp=query (l,r,,cnt,);
update (r,tmp+a[i].s,,cnt,);
}
ans=query (cnt,cnt,,cnt,);
if (ans==MAX) ans=-;
}
printf("%d\n",ans);
}
return ;
}
xdoj-1324 (区间离散化-线段树求区间最值)的更多相关文章
- 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)
原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...
- hdu 1754 I Hate It (线段树求区间最值)
HDU1754 I Hate It Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u D ...
- 【线段树求区间第一个不大于val的值】Lpl and Energy-saving Lamps
https://nanti.jisuanke.com/t/30996 线段树维护区间最小值,查询的时候优先向左走,如果左边已经找到了,就不用再往右了. 一个房间装满则把权值标记为INF,模拟一遍,注意 ...
- SGU 180 Inversions(离散化 + 线段树求逆序对)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=180 解题报告:一个裸的求逆序对的题,离散化+线段树,也可以用离散化+树状数组.因为 ...
- HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 原题目描述在最下面. 1e5个点,问 ...
- SPOJ 3267 D-query(离散化+主席树求区间内不同数的个数)
DQUERY - D-query #sorting #tree English Vietnamese Given a sequence of n numbers a1, a2, ..., an and ...
- [Noi2016]区间[离散化+线段树维护+决策单调性]
4653: [Noi2016]区间 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 621 Solved: 329[Submit][Status][D ...
- POJ 2528 Mayor's posters 【区间离散化+线段树区间更新&&查询变形】
任意门:http://poj.org/problem?id=2528 Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total S ...
- BZOJ4653(区间离散化+线段树+决策单调尺取)
写得很好的题解 一眼过去很像是:排序,然后从前向后扫,有这个区间时插到树里,过去以后再删除.然后事实也是这样做的…… 具体起来: 1.如果考虑暴力的话,一种想法是枚举左端和右端要选取的区间(如果我们按 ...
随机推荐
- --save-dev 与 --save区别
npm install 在安装 npm 包时,有两种命令参数可以把它们的信息写入 package.json 文件,一个是npm install --save另一个是 npm install --sav ...
- windows mfc 程序,不同程序通信和互斥
1. 共享内存(项目中使用过) 我转备份文章:http://www.cnblogs.com/swing07/p/8087686.html CreateFileMapping 或 OpenFileMap ...
- AI的新增功能(定义图案)(描边渐变)(图像描摹)5.1
1.定义图案:打开一个AI素材文件如图: 选择工具拖拽选择这个图案,选择“对象”“图案”“建立”完成图案的建立 此时会弹出图案选项对话框,改变拼贴类型,图案宽高,份数,不透明度,单击"完成“ ...
- 2.python函数编程-filter函数
fileter功能主要使用在需要对数据进行多种操作,并对数据进行过滤的操作. 普通函数实现: movie = ['sb_alex', 'wupei', 'tiger', 'goosb','xxfd', ...
- WPF 基于Adorner实现类似Popup效果
1. 什么是Adorner 装饰器是一种特殊类型的FrameworkElement,可用来向用户提供可视提示. 装饰器有很多用途,可用来向元素添加功能句柄,或者提供有关某个控件的状态信息. 2. ...
- java.lang.UnsatisfiedLinkError:no dll in java.library.path
报错:java.lang.UnsatisfiedLinkError:no dll in java.library.path 参考: Java调用Dll时,会出现no dll in java.libra ...
- 查找xml中的接口名及涉及表名并输出
#! /usr/bin/env python3 # -*- coding:utf-8 -*- import xml.dom.minidom #该模块被用来处理xml文件 import re #正则表 ...
- [Linux]Linux下修改snmp协议的默认161端口
一.Linux SNMP的配置 SNMP的简介和Linux下IPV4,IPV6地址的snmp协议开启可以参考上一个随笔:[Linux]CentOS6.9开启snmp支持IPV4和IPV6 二.修改默认 ...
- asp.net core json返回的时间格式出现T 如何解决
可以在sturap里面 修改配置日期返回的格式 // services.AddMvc(); services.AddMvc().AddJsonOptions(options => { optio ...
- Ansible-playbook的简单使用 [转]
一. 介绍 ansbile-playbook是一系列ansible命令的集合,利用yaml 语言编写.playbook命令根据自上而下的顺序依次执行.同时,playbook开创了很多特性,它可以允许你 ...