Educational Codeforces Round 112 E.Boring Segments-线段树+双指针
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-线段树+双指针相关推荐
- Educational Codeforces Round 96 E. String Reversa 线段树模拟序列交换
传送门 文章目录 题意: 思路: 题意: 思路: 与上一篇题解大同小异,无非就是不需要枚举排列了. // Problem: E. String Reversal // Contest: Codefor ...
- Educational Codeforces Round 112 (Rated for Div. 2)
Educational Codeforces Round 112 (Rated for Div. 2) 题号 题目 知识点 A PizzaForces B Two Tables C Coin Rows ...
- Educational Codeforces Round 112 (Rated for Div. 2)(A-D)
Educational Codeforces Round 112 (Rated for Div. 2) A 我写的挺烦的,其实判断一下奇偶数和有没有a>0就行 #include <bits ...
- Educational Codeforces Round 112(Div.2) ABC题解
D题好像可以做一做,挖个坑以后做好了来填(doge Educational Codeforces Round 112(Div.2) 题目列表 1.A 2.B 3.C 1.A 原题链接 题目大意 有三种 ...
- Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces-题解
目录 Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces Problem Description Input Outp ...
- Educational Codeforces Round 112 (Rated for Div. 2) 个人题解
A. PizzaForces 题意 有三种披萨制作方案:15分钟制作6片.20分钟制作8片和25分钟制作10片. 问制作出至少nnn片披萨要多少分钟 分析 三种方案的效率都一样,都是每分钟制作0.4个 ...
- Educational Codeforces Round 112 (Rated for Div. 2)(补题)
B. Two Tables 题意: 给定一个W*H的矩形,在里面有一个蓝色桌子,坐标(左右顶点)(x1,y1)(x2,y2),然后还要在里面放一个红色桌子,要想放开红色桌子,问你蓝色桌子移动的最小距离 ...
- Codeforces Round #413 C. Fountains (线段树的创建、查询、更新)
vj题目链接: https://vjudge.net/contest/235444#problem/F 题意: 有 n 个待建的喷泉,每个的建造代价为pi coins或者pi diamonds(co ...
- 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)( ...
最新文章
- 【ACM】【STL】stack应用
- NIOS II spi详解
- 配置ssh_config
- 【Android 逆向】Android 中常用的 so 动态库 ( 拷贝 /system/lib/ 中的 Android 系统 so 动态库 )
- 数据分析、机器学习必读书,李航《统计学习方法》发布算法推导视频啦!(附作业讲解)...
- 开发笔记:游戏逻辑模块组织及数据同步
- 深入浅出,对于代理模式的理解(代理模式与外观模式的区别)
- Know more about Cache Buffer Handle
- 分屏总屏计算机电缆,分屏加总屏电缆DJYVP计算机电缆14x2x0.75
- JA-SIG(CAS)学习笔记1
- php pathinfo()函数
- 安装CLOVER引导器到硬盘EFI分区
- CORTEX-A系列处理器
- python提取pdf内容_别再问如何用Python提取PDF内容了!
- 小学期助教感受-Funcode游戏编程
- 【历史上的今天】8 月 1 日:中国的第一台计算机成功运行;Microsoft Office 首次推出;今日头条上线
- 从程序员角度看心理学中的恐慌区、学习区和舒适区
- JSON.stringfy()详解
- (24) T-GCN-时间图卷积网络用于交通预测
- n卡图像锐化最佳设置方法
热门文章
- 史上最气人的数学家:文理双全智商还高,说话只说半句,解题只解半个,调戏人调戏了三百年还不够......
- 宝贝,我帮你清了购物车哦!
- 不同国家的视力表也不一样!| 今日趣图
- K-Means算法的10个有趣用例
- c语言两个长整数相加,二个超长正整数的相加
- mysql slave 1032_修复mysql slave复制1032错误
- 用linux命令通常做什么,如何知道你在 Linux 里最常使用的几个命令?
- python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...
- c++tcp接收文件缓存多大合适_网易面经:深剖TCP协议的流量控制和拥塞控制,你懂了吗?...
- 算法设计与分析——分治与递归策略——hanoi问题