https://codeforces.com/contest/1555/problem/E

这场的e好像比较简单。

题目大意,给你n个线段,最大点是m,每一个线段有一个权值w,你能选择线段来覆盖1-m这个区间的,选择的代价为最大权值和最小权值的差。问你最小的的代价是多少。

思路:先把线段按照权值排序,使用双指针来维护每一个线段i能选择最左边能合法的一段区间,那么a[j].sum-a[i].sum就是从i开始最小的答案了,检查是否合法可以用线段树来维护最小值,最小值不等于0 那就说明所以点都被覆盖了。

坑点:注意所有的r要-1,因为1-10和11-12 是不相连,1-10和10-12才是相连的。

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <bitset>
#include <complex>
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define lson rt<<1
#define rson rt<<1|1
#define lowbit(a) ((a)&-(a))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define fi first
#define sc second
#define pb push_back
#define all(x) (x).begin(),(x).end()
using namespace std;
typedef long long  ll;
typedef unsigned long long  ull;
typedef pair<int,int> pii;
const ll mod=1e9+7;
const ll mod1=1e9+9;
const ll N =8e6+10;
const double eps = 1e-6;
const double PI=acos(-1);
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);}
ll re(){ll x;scanf("%lld",&x);return x;}
int dx[8]= {1,0,-1,0,1,1,-1,-1}, dy[8] = {0,1,0,-1,1,-1,1,-1};
int n,m;
int sum[N],ly[N];
struct p{int l,r,sum;bool operator <(const p &M) const {return sum<M.sum;}
}a[N];
void push(int rt) {if(ly[rt]){sum[lson]+=ly[rt];sum[rson]+=ly[rt];ly[lson]+=ly[rt];ly[rson]+=ly[rt];ly[rt]=0;}
}
void up(int rt,int l,int r,int x,int y,int v){if(l>=x&&r<=y){ly[rt]+=v;sum[rt]+=v;return;}push(rt);int mid=(l+r)/2;if(x<=mid) up(lson,l,mid,x,y,v);if(y>mid) up(rson,mid+1,r,x,y,v);sum[rt]=min(sum[lson],sum[rson]);
}
void solve(){cin>>n>>m;for(int i=1;i<=n;i++) {cin>>a[i].l>>a[i].r>>a[i].sum;a[i].r--;}sort(a+1,a+1+n);int j=0;int ans=INF;for(int i=1;i<=n;i++){while(j<n&&sum[1]<=0){j++;up(1,1,m-1,a[j].l,a[j].r,1);}if(j>=i&&sum[1])ans=min(ans,a[j].sum-a[i].sum);up(1,1,m-1,a[i].l,a[i].r,-1);}cout<<ans<<endl;
}
int main()
{iosint t=1;//cin>>t;while(t--) solve();return 0;
}

Educational Codeforces Round 112 E.Boring Segments-线段树+双指针相关推荐

  1. Educational Codeforces Round 96 E. String Reversa 线段树模拟序列交换

    传送门 文章目录 题意: 思路: 题意: 思路: 与上一篇题解大同小异,无非就是不需要枚举排列了. // Problem: E. String Reversal // Contest: Codefor ...

  2. Educational Codeforces Round 112 (Rated for Div. 2)

    Educational Codeforces Round 112 (Rated for Div. 2) 题号 题目 知识点 A PizzaForces B Two Tables C Coin Rows ...

  3. Educational Codeforces Round 112 (Rated for Div. 2)(A-D)

    Educational Codeforces Round 112 (Rated for Div. 2) A 我写的挺烦的,其实判断一下奇偶数和有没有a>0就行 #include <bits ...

  4. Educational Codeforces Round 112(Div.2) ABC题解

    D题好像可以做一做,挖个坑以后做好了来填(doge Educational Codeforces Round 112(Div.2) 题目列表 1.A 2.B 3.C 1.A 原题链接 题目大意 有三种 ...

  5. Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces-题解

    目录 Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces Problem Description Input Outp ...

  6. Educational Codeforces Round 112 (Rated for Div. 2) 个人题解

    A. PizzaForces 题意 有三种披萨制作方案:15分钟制作6片.20分钟制作8片和25分钟制作10片. 问制作出至少nnn片披萨要多少分钟 分析 三种方案的效率都一样,都是每分钟制作0.4个 ...

  7. Educational Codeforces Round 112 (Rated for Div. 2)(补题)

    B. Two Tables 题意: 给定一个W*H的矩形,在里面有一个蓝色桌子,坐标(左右顶点)(x1,y1)(x2,y2),然后还要在里面放一个红色桌子,要想放开红色桌子,问你蓝色桌子移动的最小距离 ...

  8. Codeforces Round #413 C. Fountains (线段树的创建、查询、更新)

     vj题目链接: https://vjudge.net/contest/235444#problem/F 题意: 有 n 个待建的喷泉,每个的建造代价为pi coins或者pi diamonds(co ...

  9. Educational Codeforces Round 73 (Rated for Div. 2) F. Choose a Square 线段树 + 二维转一维

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点(xi,yi)(x_i,y_i)(xi​,yi​),每个点有个价值cic_ici​,现在你可以框一个正方形,要求左下角和右上角的坐标(x,y)( ...

最新文章

  1. 【ACM】【STL】stack应用
  2. NIOS II spi详解
  3. 配置ssh_config
  4. 【Android 逆向】Android 中常用的 so 动态库 ( 拷贝 /system/lib/ 中的 Android 系统 so 动态库 )
  5. 数据分析、机器学习必读书,李航《统计学习方法》发布算法推导视频啦!(附作业讲解)...
  6. 开发笔记:游戏逻辑模块组织及数据同步
  7. 深入浅出,对于代理模式的理解(代理模式与外观模式的区别)
  8. Know more about Cache Buffer Handle
  9. 分屏总屏计算机电缆,分屏加总屏电缆DJYVP计算机电缆14x2x0.75
  10. JA-SIG(CAS)学习笔记1
  11. php pathinfo()函数
  12. 安装CLOVER引导器到硬盘EFI分区
  13. CORTEX-A系列处理器
  14. python提取pdf内容_别再问如何用Python提取PDF内容了!
  15. 小学期助教感受-Funcode游戏编程
  16. 【历史上的今天】8 月 1 日:中国的第一台计算机成功运行;Microsoft Office 首次推出;今日头条上线
  17. 从程序员角度看心理学中的恐慌区、学习区和舒适区
  18. JSON.stringfy()详解
  19. (24) T-GCN-时间图卷积网络用于交通预测
  20. n卡图像锐化最佳设置方法

热门文章

  1. 史上最气人的数学家:文理双全智商还高,说话只说半句,解题只解半个,调戏人调戏了三百年还不够......
  2. 宝贝,我帮你清了购物车哦!
  3. 不同国家的视力表也不一样!| 今日趣图
  4. K-Means算法的10个有趣用例
  5. c语言两个长整数相加,二个超长正整数的相加
  6. mysql slave 1032_修复mysql slave复制1032错误
  7. 用linux命令通常做什么,如何知道你在 Linux 里最常使用的几个命令?
  8. python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...
  9. c++tcp接收文件缓存多大合适_网易面经:深剖TCP协议的流量控制和拥塞控制,你懂了吗?...
  10. 算法设计与分析——分治与递归策略——hanoi问题