当前位置: 首页 > news >正文

借教室--二分+查分

1.不要多开map,很占空间和时间

2.差分体现在占教室,区间的减用差分,区间的加可以模拟翻棋子或者涂油漆什么的

3.二分体现在最大值最小,就是具有单调性,无穷绝对可以的情况,那么从无穷开始二分尝试答案,最终快速找到

P1083 [NOIP 2012 提高组] 借教室 - 洛谷

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<int,int> pii;
int df[1000002];
int n,m;
int d[1000002];
int s[1000002],t[1000002];
bool check(int x)
{vector<int> dff;dff.push_back(0);for(int i=1;i<=n;i++) dff.push_back(df[i]);for(int i=1;i<=x;i++){dff[s[i]]-=d[i];dff[t[i]+1]+=d[i];}ll s=0;for(int i=1;i<=n;i++){s+=dff[i];if(s<0) return true;}return false;
}
void solve()
{} 
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);//solve();cin>>n>>m;int a,b;a=0;for(int i=1;i<=n;i++){cin>>b,df[i]=b-a;a=b;	} for(int i=1;i<=m;i++) cin>>d[i]>>s[i]>>t[i];int l=1,r=m;if(!check(m)){cout<<0;}else{int an;while(l<=r){int mid=(l+r)>>1;if(check(mid)){an=mid;r=mid-1;}else l=mid+1;}cout<<-1<<endl;cout<<an;		}return 0;
}

相关文章:

  • 柠檬(lemon)是什么东西?
  • leetcode:1688. 比赛中的配对次数(python3解法,数学相关算法题)
  • 深耕数字化赛道,联众优车以创新风控体系构筑汽车金融护城河
  • 【脚本】一键部署脚本
  • DH加密详解
  • SD08_解决由于anaconda版本过低无法安装高版本python的问题
  • camera_venc_thread线程获取高分辨率编码码流
  • PH热榜 | 2025-05-27
  • MySQL connection close 后, mysql server上的行为是什么
  • Python 实现简易版的文件管理(结合网络编程)
  • 一键重装Windows/Linux系统,支持虚拟服务器
  • redis高并发问题
  • (自用)Java学习-5.15(模糊搜索,收藏,购物车)
  • 公共场所人脸识别设备备案合规要点
  • 实战分享:DolphinScheduler 中 Shell 任务环境变量最佳配置方式
  • Python 实现桶排序详解
  • SNTP 协议详解:网络时间同步的轻量级解决方案
  • TLE9893-2QKW62S新建Keil MDK工程
  • VIN码识别解析接口如何用C#进行调用?
  • MySQL推出全新Hypergraph优化器,正式进军OLAP领域!
  • 专做民宿预定的网站/信息流广告素材网站
  • 网站301如何做/美食软文300范例
  • 西瓜网络深圳网站建设 东莞网站建设/百度推广后台管理
  • 个人做外贸网站违法吗/网络运营培训哪里有学校
  • 网站建设合同 文库/google seo整站优化
  • 河北涿州建设局网站/查询网站流量的网址