首页 > 其他分享 >P4198 楼房重建

P4198 楼房重建

时间:2023-10-26 21:13:53浏览次数:30  
标签:int 楼房 P4198 limit maxn ans 区间 query 重建

P4198 楼房重建(RE:题解再改造!!)

#include<bits/stdc++.h>
#define MAXN 2000010
using namespace std;
int n,m;
int x[MAXN],y[MAXN],ans[MAXN];
double K[MAXN];
int query(int p,int l,int r,double maxn){
if(K[p]<=maxn) return 0;
if(l==r) return K[p]>maxn;
else if(K[p*2]<=maxn) return query(p*2+1,((l+r)>>1)+1,r,maxn);
return query(p*2,l,(l+r)>>1,maxn)+ans[p]-ans[p*2];
}
void Change(int p,int l,int r,int limit,double v){
if(l==limit&&limit==r){
ans[p]=1,K[p]=v;
return ;
}
int mid=(l+r)>>1;
if(limit<=mid) Change(p*2,l,mid,limit,v);
else Change(p*2+1,mid+1,r,limit,v);
K[p]=max(K[p*2],K[p*2+1]);
ans[p]=ans[p*2]+query(p*2+1,mid+1,r,K[p*2]);
}
int main(){
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x[i]>>y[i];
Change(1,1,n,x[i],(double)y[i]/x[i]);
cout<<ans[1]<<"\n";
}
return 0;
}

正文

  1. 对于某栋楼的高度的修改:单点修改

  2. 对于从零开始的可视个数:区间查询

所以可以将此题转化成线段树

每一个叶子节点:最大值为该点斜率,可视个数为1

仅用检查是否大于查询的maxn(斜率值)即可

if(l==r) return K[p]>maxn;

右区间:

  1. 右区间的左子区间的最大值

    1. 小于左区间最大值:右的左子区间一定不可见,递归右区间的左子节点.

    2. 大于左区间最大值:加上右区间答案,递归右区间的左子区间.右区间的左子区间可能覆盖右子区间

赞美一些动开线段树

ans[p]=ans[p*2]+query(p*2+1,mid+1,r,ma[p*2]);

区间答案即为左区间的答案+右区间斜率合法的所有楼房数.

对于每一个区间存储最大值可以使query的效率大大优化,玄学优化

致谢

Nemlit大佬%%%

标签:int,楼房,P4198,limit,maxn,ans,区间,query,重建
From: https://www.cnblogs.com/AlpacaKing-presidential-palace/p/17790391.html

相关文章

  • 【MySQL】alter table TableName engine=InnoDB 完成表重建
    通过altertable来实现重建表原文地址:https://zhuanlan.zhihu.com/p/610997918mysql基础架构执行原理原文地址:https://blog.csdn.net/Kong_a/article/details/119775660MDL锁介绍原文地址:https://blog.csdn.net/weixin_43189971/article/details/126436023 1、应用背景在日......
  • ControlNet-trt优化总结4:onnx图修改与重建
    ControlNet-trt优化总结4:onnx图修改与重建在这一节中,主要总结网络层面的优化,针对于算子插件优化,主要聚焦于以下几点:修改onnx图,添加不支持的算子插件增加前后处理部分,前后处理导出为onnx图onnx图surgeon原有的graph中存在大量的GN操作,正常fp32的时候没有问题,但是当使用fp16......
  • 【最佳实践】MongoDB导入数据时重建索引
    MongoDB一个广为诟病的问题是,大量数据resotore时索引重建非常缓慢,实测5000万的集合如果有3个以上的索引需要恢复,几乎没法成功,而且resotore时如果选择创建索引也会存在索引不生效的问题,种种情况表明,MongoDB的一些默认设置存在明显不合理之处。当然,深入理解后总会有办法解决这些问......
  • 题解:洛谷P1119 灾后重建
    题解:洛谷P1119灾后重建题目传送门前言:没有掌握floyed求最短路的精髓是每次增加选一个中转点,导致写了2h才勉强卡过法1:最暴力的想法就是开个三维数组把前i个点的dis状态全部存下来,跑N次floyed,当然由于每次点数时递增的,所以实际复杂度远远小于O(N^4),算了下大概200个点跑了4e8多一......
  • P1119 灾后重建
    题目传送:链接思路算法:\(Floyd.\)每次询问记录一个变量\(n\),表示当前遍历到哪个点。当\(t_n<=T\)的时候,利用\(n\)点更新到$(x,y)$点的最短路。如果发现\(x,y\)点其中有一个还没有修好,或者是\(d_{x_y}\)为0x3f3f3f3f,就输出\(-1\)。代码#include<bits/s......
  • SLAM 深度估计 三维重建 标定 传感器融合
    经常有粉丝问视觉/激光/SLAM、三维重建等方向的学习路线,这里我再总结给大家,如下所示:随着最近几年智能机器人、自动驾驶、AR/MR等领域的快速发展,企业对3D视觉算法及SLAM算法需求越来越强烈,该领域迎来了爆发式发展。按照应用不同我们把3D视觉及SLAM算法分为如下方向:视觉深度估计视觉(......
  • MSSQL 维护小记(清理进程、重建索引)
    ------------------------------清理进程----------------------------------- declare@deleteSleepSessionnvarchar(100)--申明一个变量declaretablelistcursorlocal--申明一个本地游标forselect'kill'+rtrim(spid)frommaster.dbo.sysprocesses--数据库系统进......
  • PACS医学影像处理系统源码-虚拟内窥镜 三维重建技术
    PACS系统与医院HIS实现双向数据交换,自动从HIS系统获得病人基本信息、检查预约请求,自动向HIS系统传送预约请求接受、检查费用发生信息,接受来自HIS系统的检查结果查询和图像数据检索。医院医学影像PACS系统源码,集成三维影像后处理功能,包括三维多平面重建、三维容积重建、三维表面重建......
  • 剑指Offer面试题7:重建二叉树
    一、题目给定节点数为n的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.vin.length== pre.length2.pre和vin 均无重复元素3.vin出现的元素均出现在 ......
  • 代码随想录算法训练营-贪心算法-4|406. 根据身高重建队列、452. 用最少数量的箭引爆
    406. 根据身高重建队列1. 一定要想如何确定一个维度,然后再按照另一个维度重新排列。2.先确定身高的维度,降序排列。3. 按照身高排序之后,优先按身高高的people的k来插入,后序插入节点也不会影响前面已经插入的节点,最终按照k的规则完成了队列。4. 局部最优:优先按身高高的peop......