解释:先留坑

题目:https://www.cometoj.com/contest/73/problem/D?problem_id=4120

#include<bits/stdc++.h>
using namespace std;
#define se set<aa>
#define it iterator
#define lowbit(x) (x&(-x))
typedef long long ll;
const int M=5e5+;
int n,m,q;
struct ope{
ll l,r,val;
}a[M];
struct quer{
ll l,r,id;
}b[M];
struct aa{
ll l,r,val,id;
};
set<aa>s;
bool cmp(quer x,quer y){
return x.r<y.r;
}
bool operator <(aa a,aa b) {
return a.r < b.r;
}
ll tree[M],ans[M];
void add(ll x,ll y)
{
if(x == ) return;
for(;x <= n; x += lowbit(x))
tree[x] += y;
} ll Sum(ll x) {
ll ans = ;
for(; x > ; x -= lowbit(x))
ans += tree[x];
return ans;
}
void split(se::it id,ll x){
ll l=id->l,r=id->r,val=id->val,_id=id->id;
if(x<l||x>=r)
return ;
s.erase(id);
s.insert((aa){l,x,val,_id});
s.insert((aa){x+,r,val,_id});
}
void Assign(ll l,ll r,ll val,ll id){
se::it x=s.lower_bound((aa){,l-,,});
split(x,l-);
se::it y=s.lower_bound((aa){,r,,});
split(y,r); x=s.lower_bound((aa){,l,,});
y=s.lower_bound((aa){,r+,,});
for(se::it i=x;i!=y;){
se::it j=i;
i++;
add(j->id,-((j->r)-(j->l)+)*(j->val));
s.erase(j);
}
s.insert((aa){l,r,val,id});
add(id,(r-l+)*val);
}
int main(){ scanf("%d%d%d",&n,&m,&q);
for(int i=;i<=n;i++){
scanf("%lld%lld%lld",&a[i].l,&a[i].r,&a[i].val);
}
for(ll i=;i<=q;i++)
scanf("%lld%lld",&b[i].l,&b[i].r),b[i].id=i;
sort(b+,b++q,cmp);
s.insert((aa){,m,,});
for(int i=;i<=q;i++){
for(int j=b[i-].r+;j<=b[i].r;j++){
Assign(a[j].l,a[j].r,a[j].val,j);
}
ans[b[i].id]=Sum(n)-Sum(b[i].l-);
}
for(int i=;i<=q;i++)
printf("%lld\n",ans[i]);
return ;
}

ODT(区间覆盖问题)的更多相关文章

  1. HDU 4509 湫湫系列故事——减肥记II(线段树-区间覆盖 或者 暴力技巧)

    http://acm.hdu.edu.cn/showproblem.php?pid=4509 题目大意: 中文意义,应该能懂. 解题思路: 因为题目给的时间是一天24小时,而且还有分钟.为了解题方便, ...

  2. UVa 10020 (最小区间覆盖) Minimal coverage

    题意: 数轴上有n个闭区间[ai, bi],选择尽量少的区间覆盖一条指定线段[0, m] 算法: [start, end]为已经覆盖到的区间 这是一道贪心 把各个区间先按照左端点从小到大排序,更新st ...

  3. codeforces Gym 100187F F - Doomsday 区间覆盖贪心

    F. Doomsday Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/problem/F ...

  4. 【区间覆盖问题】uva 10020 - Minimal coverage

    可以说是区间覆盖问题的例题... Note: 区间包含+排序扫描: 要求覆盖区间[s, t]; 1.把各区间按照Left从小到大排序,如果区间1的起点大于s,则无解(因为其他区间的左起点更大):否则选 ...

  5. uvalive 2326 - Moving Tables(区间覆盖问题)

    题目连接:2326 - Moving Tables 题目大意:在一个走廊上有400个教室, 先在有一些桌子要移动, 每次移动需要十分钟, 但是不同房间的桌子可以在同一个十分钟内移动,只要走廊没有被占用 ...

  6. 高效算法——E - 贪心-- 区间覆盖

    E - 贪心-- 区间覆盖 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/E 解题思路: 贪心思想, ...

  7. 外星人的供给站 (区间覆盖 t贪心)

    /** 区间覆盖问题 分析: 每个点可以确定两个圆心 圆心的范围形成 一个区间 在这个区间上以任意一点画圆便可将此点 包含在内 如果有两个点所确定的区间相交了 说明这两个点可以用一个圆包含在内 即用一 ...

  8. Cleaning Shifts(区间覆盖)

    /* http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1019&ojid=1&cid=10 题目: 给定一个时 ...

  9. UVA 10382 - Watering Grass【贪心+区间覆盖问题+高精度】

    UVa 10382 - Watering Grass n sprinklers are installed in a horizontal strip of grass l meters long a ...

  10. 南阳OJ-12-喷水装置(二)贪心+区间覆盖

    题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=12 题目大意: 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有 ...

随机推荐

  1. 2020/2/3 PHP代码审计之PHP弱类型

    0x00 简介 php中有两种比较的符号 == 与 === <?php 2 $a = $b ; 3 $a===$b ; 4 ?> === 在进行比较的时候,会先判断两种字符串的类型是否相等 ...

  2. POJ 1731:Orders

    Orders Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9940   Accepted: 6048 Descriptio ...

  3. 创建简单spring boot项目

    简介 使用spring boot可以轻松创建独立的,基于Spring框架的生产级别应用程序.Spring boot应用程序只需要很少的spring配置 特点 创建独立的Spring应用程序 直接嵌入t ...

  4. 基于python的爬虫流程图(精简版)

    网址: https://www.processon.com/view/link/5e1148b8e4b07db4cfa9cf34 如果链接失效,请及时反馈(在评论区评论),博主会及时更新

  5. UVA 11552 序列划分模型 状态设计DP

    这个题目刚看到还真不好下手,把一个是 k的倍数的长度的字符串分成len/k块,每块是k个字母,每个块可以重新组合,最后使得整个序列的相同字母尽量在一起,也就是说,最后会把序列从前往后扫,相连的相同字母 ...

  6. Python笔记_第一篇_面向过程_第一部分_3.进制、位运算、编码

    通过对内存这一个部分的讲解,对编程会有一个相对深入的认识.数据结构是整个内存的一个重要内容,那么关于数据结构这方面的问题还需要对进制.位运算.编码这三个方面再进行阐述一下.前面说将的数据结构是从逻辑上 ...

  7. Spring framework体系架构

    Spring3.x 图中将spring分为5个部分:core.aop.data access.web.test,图中每个圆角矩形都对应一个jar,如果在maven中配置,所有这些jar的"g ...

  8. html分页自适应居中;css设置分页自适应居中

    制作网页列表的分页必不可少,显示的列表条数也不一样,让我们一起来看看如何让分页标签根据给定的分页自动居中呢. 对<ul>标签设置样式为:{ display: table margin:40 ...

  9. 吴裕雄--天生自然Linux操作系统:Linux 用户和用户组管理

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  10. 吴裕雄--天生自然深度学习TensorBoard可视化:projector_MNIST

    import os import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from te ...