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

借教室--二分+查分

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;
}

http://www.xdnf.cn/news/9452.html

相关文章:

  • vue2 一分钟不动系统 系统将进行锁定
  • Android系统 TinyAlsa命令
  • 计算机科技笔记: 容错计算机设计05 n模冗余系统 特殊的双模系统 复杂结构 非并行串行结构的两种计算方法
  • 4.GIS迁移步骤+注意事项+部署常见问题
  • Keepalived 配置 VIP 的核心步骤
  • 西门子-队列
  • SaaS与私有部署:企业如何选择同城O2O外卖跑腿APP开发方案?
  • 第五章 文件内容显示
  • java每日精进 5.27【异步实现】
  • C3P0连接池的使用方法和源码分析
  • Linux系统 - 系统编程概念
  • 【Redis】常用的数据类型 + 单线程模型
  • 答疑:鲜羊奶如何助力亲子关系平衡?
  • 全志V853 mpp程序开发
  • Python训练营---Day38
  • Kubernetes 中的CRD(Custom Resource Definition)与Operator详解
  • Web前端入门:JavaScript 运算符 == 和 === 有什么区别?
  • 枪弹库专用门
  • Vue3 封装el-table组件
  • [学习]C语言指针函数与函数指针详解(代码示例)
  • 2025年6月亲测可用 | 剪映免SVIP版本 | 支持数字人
  • esp32 sip voip 软电话
  • 创建型模式之Abstract Factory(抽象工厂)
  • o1 mini vs o3 mini vs o3 mini high:2025全面对比测评(性能/价格/场景)
  • js获取浏览器中文参数
  • 从预测到验证一键get靶基因结合的转录因子
  • 余弦退火:助力模型训练的优化算法
  • 如何通过TDE透明加密保护智慧档案管理系统中的数据
  • 秒杀系统—1.架构设计和方案简介
  • 【Linux】Linux 操作系统 - 19 , 重谈文件(三) ~ 学好 Linux 精髓是什么 , 缓冲区又是什么 ???【面试】