思想 : 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 (区间离散化-线段树求区间最值)的更多相关文章

  1. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  2. hdu 1754 I Hate It (线段树求区间最值)

    HDU1754 I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u D ...

  3. 【线段树求区间第一个不大于val的值】Lpl and Energy-saving Lamps

    https://nanti.jisuanke.com/t/30996 线段树维护区间最小值,查询的时候优先向左走,如果左边已经找到了,就不用再往右了. 一个房间装满则把权值标记为INF,模拟一遍,注意 ...

  4. SGU 180 Inversions(离散化 + 线段树求逆序对)

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=180 解题报告:一个裸的求逆序对的题,离散化+线段树,也可以用离散化+树状数组.因为 ...

  5. HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  1e5个点,问 ...

  6. SPOJ 3267 D-query(离散化+主席树求区间内不同数的个数)

    DQUERY - D-query #sorting #tree English Vietnamese Given a sequence of n numbers a1, a2, ..., an and ...

  7. [Noi2016]区间[离散化+线段树维护+决策单调性]

    4653: [Noi2016]区间 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 621  Solved: 329[Submit][Status][D ...

  8. POJ 2528 Mayor's posters 【区间离散化+线段树区间更新&&查询变形】

    任意门:http://poj.org/problem?id=2528 Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  9. BZOJ4653(区间离散化+线段树+决策单调尺取)

    写得很好的题解 一眼过去很像是:排序,然后从前向后扫,有这个区间时插到树里,过去以后再删除.然后事实也是这样做的…… 具体起来: 1.如果考虑暴力的话,一种想法是枚举左端和右端要选取的区间(如果我们按 ...

随机推荐

  1. 微信小程序 无限加载 上拉加载更多

    加载更多,其实就是再次向接口发送请求,把返回的数据,追加到渲染页面的数组里的过程,具体实现实例如下: demo.js // pages/project/project.js const app = g ...

  2. Debug method

    #define DEBUG(format,...) printf("Ray.he file:"__FILE__" func:%s() line:%d, print &qu ...

  3. API服务网关(Zuul)

    技术背景 前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡,那我们的各种微服务又要如何提供给外部应用调用呢. 当然,因为是REST API接口,外部客户端直接调用各个微服务是没有问 ...

  4. 跨域 jsonp 和 CORS 资料

    http://mp.weixin.qq.com/s/iAShnqvsOyV-Xd0Ft7Nl2Q HTML5安全:CORS(跨域资源共享)简介...ie67不要想了... http://www.cnb ...

  5. vue2整个项目中,数据请求显示loading图

    一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...

  6. xshell提示必须安装最新的更新

    今天大家的xshell基本都出了这个问题 调整时间,调整到比较前的时间,打开xshell即可. 然后工具->选项 把更新去了

  7. linux 在执行命令过程中,反单引号(`)这个符号代表的意义为何?

    在一串命令中,在`之内的命令将会被先执行,而且执行出来的结果将作为外部的输入信息.例如:uname -r 会显示出目前的内核版本,而我们的内核版本在/lib/modules里面,因此.你可以先执行un ...

  8. leetcode python 004

    ##  已知l1,l2均为升序数组,##  在两数组l1,l2中寻找第n位数,##  两数组中位数中,前者大于后者,说明后者中位数以下的成员必定在真正中位数之下##  可以将其剔除,剔除a个元素后的两 ...

  9. 查看电脑的IP地址及配置

    自己主机的IP地址查看cmd----ipconfig/all,如下图

  10. TCCSuperPlayerView让Delphi支持app视频播放!

    今天ChinaCock发布了新版,完美支持视频播放!新版本中,发布了新的控件TCCSuperPlayerView,以支持视频播放. 这是一个可视控件,拖放到Form上,调整好大小与位置,就可以调用他的 ...