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

楼房重建

时间:2024-10-28 09:10:02浏览次数:2  
标签:rt cnt cout int 楼房 tr 重建

楼房重建

维护每个区间从左边开始上升,维护上升的数量

#include<bits/stdc++.h>
#define N 100005
using namespace std;
int n, m, x, y;
struct Tree{
	int l,r,cnt;
	double mx;
}tr[N<<2];
int cal(int rt, double x){
	int res = 0;
	if(tr[rt].mx <= x) return 0;
	if(tr[rt].l == tr[rt].r) return tr[rt].mx > x;
	if(tr[rt<<1].mx > x)
		res = tr[rt].cnt - tr[rt<<1].cnt + cal(rt<<1, x);//右区间的长度全部加上,递归左区间 
	else
		res = cal(rt<<1|1, x);
	return res;
}
void pushup(int rt){
	tr[rt].mx = max(tr[rt<<1].mx, tr[rt<<1|1].mx);
	int ans = cal(rt<<1|1, tr[rt<<1].mx);
	tr[rt].cnt = tr[rt<<1].cnt + ans; 
}
void build(int rt, int l, int r){
	tr[rt].l = l, tr[rt].r = r;
	if(l == r){
//		tr[rt].mx = 0.0;
//		tr[rt].cnt = 0; 
		return;
	}
	int mid = (l+r)>>1;
	build(rt<<1, l, mid);
	build(rt<<1|1, mid+1, r);
}
void update(int rt, int pos, double v){
	if(tr[rt].l == tr[rt].r){
		tr[rt].mx = v;
		tr[rt].cnt = 1;
		return;
	}
	int mid = (tr[rt].l + tr[rt].r)>>1;
//	cout<<rt<<" "<<tr[rt].l<<" "<<tr[rt].r<<" "<<mid<<endl; 
	if(pos <= mid) update(rt<<1, pos, v);
	else update(rt<<1|1, pos, v);
	pushup(rt);
}
int main(){
//	freopen("slf.out","w",stdout);
	cin>>n>>m;
	build(1,1,n);
	for(int i = 1; i <= m; i++){
		cin>>x>>y;
		update(1, x, y*1.0/x);
		cout<<tr[1].cnt<<endl;
	}
	return 0;
}
/*
4 3
3 9
4 7
1 1
10 100
6 166267291
4 764085103
1 12360641
1 846991393
6 383204345
2 69698641
9 12331341
1 772764651
5 131311041
10 46049537
6 690746401
2 145679903
10 758217
4 201987721
9 249525949
7 161049529
6 110578175
4 231517001
5 644489651
7 340648201
7 151799407
10 7480386
3 206257865
9 328935144
3 352739143
7 84581584
5 29535731
4 196598419
6 55312269
8 11283241
7 10289281
4 250134981
2 208241815
5 46222012
6 34664323
7 359037865
9 396005251
2 101892805
2 210317844
3 441658977
5 113743513
8 44192926
6 102944206
4 288727385
6 233930929
8 2996745
2 660629278
4 32747101
5 7218281
9 991959715
1 130023361
9 20174977
10 590823439
4 609043601
10 794927517
8 835448158
9 79194028
10 218902057
3 81328780
1 842713384
6 506252986
9 38734669
7 134763046
7 198136601
6 145100953
8 139458607
3 621701089
10 163368301
8 162641963
2 177393360
8 429881306
7 165305441
4 16342951
10 217025793
5 32343754
1 221071391
4 17866381
2 1999669
2 109659346
10 179614829
4 59706591
4 19298137
8 774219601
8 6099164
7 258624081
5 66188305
5 64116244
10 355183187
2 354022111
6 3929553
3 234438274
5 550657829
1 283731112
1 497844261
7 287715541
7 434450329
10 267779521
5 37026775
9 7125790
7 23094767


1
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1


*/

标签:rt,cnt,cout,int,楼房,tr,重建
From: https://www.cnblogs.com/caterpillor/p/18509626

相关文章

  • Linux系统重建Grub引导的方法
    一、问题出现的原因在安装双系统时,我们都是先安装Windows系统,再安装Linux系统,这样在启动计算机时,两个系统都可以被引导启动,并在开机界面可以进行选择。这是因为Linux使用的操作系统引导加载器Grub可以引导如Windows、Linux等多种操作系统,但是Windows的操作系统引导加载器不能......
  • 代码随想录算法训练营第三十四天|134. 加油站 135. 分发糖果 860.柠檬水找零 406.根据
    134.加油站在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的......
  • 大贤3D家谱-保存、删除与重建
    保存:对于创建的节点、内容进行本地存储。重建:清除没有保存的数据,重现保存过的历史节点。删除:删除包括该节点的所有子节点信息。灵活的使用模式​为了保证软件的持续健康发展,我们采用了试用+付费的模式。用户可以先免费体验大贤3D家谱2025的基本功能,感受其强大的家谱构建和......
  • 【重建虚拟环境】虚拟环境里python.exe被破坏了,对策
    虚拟环境里python.exe被破坏了,python.exe变成了0KB虚拟环境不能使用了。这个时候需要重建虚拟环境如果你重建虚拟环境,之前使用pipinstall安装的所有包确实会丢失,因为新的虚拟环境不会保留之前的包记录。不过,有一种简单的办法可以避免这个问题,并轻松恢复之前安装的包:如果你......
  • 重建帝国cms数据索引表,用于ecms_news_index表损坏丢失或者错误
    当帝国CMS的 ecms_news_index 表损坏或丢失时,可以通过以下步骤重建数据索引表。这些操作需要在数据库中执行,请确保在执行前备份所有相关数据。重建 ecms_news_index 表步骤1:创建临时表 ecms_newstempsql CREATETABLE[!db.pre!]ecms_newstempAS(SELECTid,c......
  • 代码随想录算法训练营 | 134. 加油站,135. 分发糖果,860.柠檬水找零,406.根据身高重建队
    134.加油站题目链接:134.加油站文档讲解︰代码随想录(programmercarl.com)视频讲解︰加油站日期:2024-10-04想法:1.总汽油大于等于消耗一定能跑完,2.当前剩余汽油小于0了,只能从下一站开始重新计算Java代码如下:classSolution{publicintcanCompleteCircuit(int[]gas,int......
  • PG重建控制文件
    1.工具 a.pg10版本以前使用pg_resetxlog工具 b.pg10及以后版本pg_resetwal工具2.命令语法Usage:pg_resetwal[OPTION]...DATADIROptions:-c,--commit-timestamp-ids=XID,XIDsetoldestandnewesttransactionsbearing......
  • 66_索引管理_复杂上机实验:基于scoll+bulk+索引别名实现零停机重建索引
    课程大纲1、重建索引一个field的设置是不能被修改的,如果要修改一个Field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulkapi写入index中批量查询的时候,建议采用scrollapi,并且采用多线程并发的方式来reindex数据,每次scoll就查询指定日期的一段数据......
  • 合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等技术应用
    合成孔径雷达干涉测量(InterferometricSyntheticApertureRadar,InSAR)技术作为一种新兴的主动式微波遥感技术,凭借其可以穿过大气层,全天时、全天候获取监测目标的形变信息等特性,已在地表形变监测、DEM生成、滑坡、火山活动、冰川运动、人工建筑物形变信息提取等多种领域展开了......
  • 楼房重建
    楼房重建题意小A在平面上\((0,0)\)点的位置,第\(i\)栋楼房可以用一条连接\((i,0)\)和\((i,H_i)\)的线段表示,其中\(H_i\)为第\(i\)栋楼房的高度。如果这栋楼房上任何一个高度大于\(0\)的点与\((0,0)\)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的。......