[cogs347]地震

COGS:地震(平衡樹)

COGS上一道題。。。文件名是equake
還是又打了一遍板子。。。
加個lazy標記就行了。。。
注意查詢時先下傳標記(lazy)

// It is made by XZZ
#include<cstdio>
#include<algorithm>
#define Fname "equake"
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
#define pr pair<point,point>
#define mp make_pair
typedef long long ll;
il int gi(){rg int x=0,f=1;rg char ch=getchar();while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;
}
int seed=233333333;
il int Rand(){return seed=seed*48271ll%2147483647;}
typedef struct node* point;
point null;
struct node{int data,size,rand,maxx,lazy;point ls,rs;node(int dat){data=maxx=dat,lazy=0,size=1,rand=Rand(),ls=rs=null;}il vd down(){if(this==null)return;data+=lazy,maxx+=lazy,ls->lazy+=lazy,rs->lazy+=lazy,lazy=0;}il vd reset(){ls->down(),rs->down();size=ls->size+rs->size+1;maxx=max(max(ls->maxx,rs->maxx),data);}
};
point root;
il point build(int n){point stack[n+2],last;int top=0;rep(i,1,n){point now=new node(gi());last=null;while(top&&stack[top]->rand>now->rand)last=stack[top],stack[top--]->reset();if(top)stack[top]->rs=now;now->ls=last,stack[++top]=now;}while(top)stack[top--]->reset();return stack[1];
}
il point merge(point a,point b){if(a==null)return b;if(b==null)return a;if(a->rand<b->rand){a->down(),a->rs=merge(a->rs,b),a->reset();return a;}else{b->down(),b->ls=merge(a,b->ls),b->reset();return b;}
}
il pr split(point now,int num){if(now==null)return mp(null,null);now->down();point ls=now->ls,rs=now->rs;if(ls->size==num){now->ls=null,now->reset();return mp(ls,now);}if(ls->size+1==num){now->rs=null,now->reset();return mp(now,rs);}if(ls->size>num){pr T=split(ls,num);now->ls=T.second,now->reset();return mp(T.first,now);}else{pr T=split(rs,num-ls->size-1);now->rs=T.first,now->reset();return mp(now,T.second);}
}
il vd del(point now){if(now!=null)del(now->ls),del(now->rs),delete now;}
int main(){freopen(Fname".in","r",stdin);freopen(Fname".out","w",stdout);int a,b,n=gi(),m=gi();char opt;null=new node(-2e9);null->size=0;root=build(n);while(m--){opt=getchar();while(opt<'A'||opt>'Z')opt=getchar();if(opt=='I'){pr T=split(root,gi());root=merge(T.first,merge(build(gi()),T.second));}else{a=gi(),b=gi();pr T=split(root,a-1),TT=split(T.second,b-a+1);if(opt=='M'){root=merge(T.first,TT.second),del(TT.first);continue;}TT.first->down();if(opt=='R')TT.first->lazy=gi();else printf("%d\n",TT.first->maxx);root=merge(T.first,merge(TT.first,TT.second));}}del(root),delete null;return 0;
}

轉載于:https://www.cnblogs.com/xzz_233/p/7356846.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282725.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第八課-第二講 08_02_bash腳本編程之七 case語句及腳本選項進階

第八課-第二講 08_02_bash腳本編程之七 case語句及腳本選項進階 一. 面向過程控制結構順序結構選擇結構循環結構選擇結構if語句 單分支&#xff0c;雙分支&#xff0c;多分支case 語句 case語句:選擇結構 case SWITCH invalue1)---此處的value是當做字符來比較的statement....…

html表單提交按鈕怎么居中,與表單框一致,居中提交按鈕_html_開發99編程知識庫...

我嘗試將提交按鈕與表單的一個條目對齊失敗。 我只是希望提交按鈕稍微定位到窗體框的右側和中心。 現在是右邊&#xff0c;但在盒子的底部。我試圖回答相似的查詢&#xff0c;對於提交按鈕( 浮點&#xff0c;margin 等等 )&#xff0c;但是我不能找到正確的選擇。我的HTML如下所…

一個簡單的WebService服務

現在&#xff0c;網上提供的免費的webservice服務的網站&#xff1a; http://www.webxml.com.cn/從擴展名上看&#xff0c;是 .net構建的網站。看看功能的實現效果&#xff1a;需求&#xff1a;我們要遠程調用手機號歸屬地的查詢&#xff1a;開發步驟&#xff1a; 1&#xff0e…

Linux中的vi和vim

一、vi與vim的概念和區別 概念: 它們都是多模式編輯器&#xff0c;不同的是vim 是vi的升級版本&#xff0c;它不僅兼容vi的所有指令&#xff0c;而且還有一些新的特性在里面。 vim優勢主要體現在一下幾方面: 1、多級撤消 我們知道在vi里&#xff0c;按 u只能撤消上次命令&a…

[工具分享]備份SSAS模型TMSL腳本元數據工具,多給自己一點后悔藥可吃。

筆者在2019年分享過自己寫的一個小工具&#xff0c;用于備份Sqlserver數據庫的元數據。近期在一個PowerBI項目中&#xff0c;發現很有必要也備份下SSAS分析模型的元數據&#xff0c;防止不小心服務器壞了或使用Tabular Editor連接數據庫方式開發過程中&#xff0c;不小心覆蓋了…

UVA - 11181 數學

UVA - 11181 題意&#xff1a; n個人去買東西&#xff0c;其中第i個人買東西的概率是p[i],最后只有r個人買了東西&#xff0c;求每個人實際買了東西的概率 代碼&#xff1a; //在r個人買東西的概率下每個人買了東西的概率&#xff0c;這是條件概率&#xff0c;因為最多20個人可…

js時間戳轉成日期格式

//第一種2 function getLocalTime(nS) { 3 return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/, ); 4 } 5 alert(getLocalTime(1293072805));6 //結果是2010年12月23日 10:537 //第二種 8 function getLocalTime(nS) { 9 r…

計算機桌面去方格子,win7桌面office圖標變成白色方格圖標的原因和解法

win7系統開機發現桌面上所有office圖標變成白色方格圖標&#xff0c;其他程序圖標都正常顯示&#xff0c;是怎么回事呢&#xff1f;出現這樣的情況&#xff0c;一般是由于文件圖標緩存錯誤或者丟失導致&#xff0c;找打原因后該如何解決問題&#xff1f;可以通過記事本來解決此…

JS獲取元素的offsetTop,offsetLeft等相關屬性

1. obj.clientWidth //獲取元素的寬度 obj.clientHeight //元素的高度 obj.offsetLeft //元素相對于父元素的left obj.offsetTop //元素相對于父元素的top obj.offsetWidth //元素的寬度 obj.offsetHeight //元素的高度 區別&#xff1a; clientWidth width padding clientHe…

vi/vim 三種模式及命令 (簡單粗暴,輕松搞懂)

//一般模式(默認模式) 一般模式&#xff1a; 移動光標 h 或 向左方向鍵 光標向左移動一個字符 j 或 向下方向鍵 光標向下移動一個字符 k 或 向上方向鍵 光標向上移動一個字符 l 或 向右方向鍵 光標向右移動一個字符 [Ctrl] [f] 屏幕『向前』移動一頁&#xff08;常用) [Ct…

Kong入門學習實踐(1)基礎概念快覽

【API網關】| 總結/Edison Zhou最近在學習Kong網關&#xff0c;因此根據老習慣&#xff0c;我會將我的學習過程記錄下來&#xff0c;一來體系化整理&#xff0c;二來作為筆記供將來翻看。由于我司會直接使用Kong企業版&#xff0c;學習過程中我會使用Kong開源版。什么是Kong&am…

條件鎖

ReentrantLock類有一個方法newCondition用來生成這個鎖對象的一個條件&#xff08;ConditionObject&#xff09;對象&#xff0c;它實現了Condition接口。Condition提供了線程通訊的一套機制await和signal等線程間進行通訊的方法。。1、適用場景當某線程獲取了鎖對象&#xff0…

計算機應用技術 平面設計,全國信息化計算機應用技術水平教育考試試卷 平面設計師...

科目編號&#xff1a;4233全國信息化計算機應用技術水平教育考試試卷(考試時間&#xff1a;180分鐘 考試總分&#xff1a;100分 專業認證課程&#xff1a;Photoshop 平面設計)注意事項1、 請首先按要求在試卷的標封處填寫您的姓名、考號等&#xff1b;2、 請仔細閱讀各種題目的…

RabbitMQ之消息模式簡單易懂,超詳細分享

前言上一篇對RabbitMQ的流程和相關的理論進行初步的概述&#xff0c;如果小伙伴之前對消息隊列不是很了解&#xff0c;那么在看理論時會有些困惑&#xff0c;這里以消息模式為切入點&#xff0c;結合理論細節和代碼實踐的方式一起來學習。正文常用的模式有Simple、Work、Fanout…

每天一個linux命令(6):rmdir 命令

今天學習一下linux中命令&#xff1a; rmdir命令。rmdir是常用的命令&#xff0c;該命令的功能是刪除空目錄&#xff0c;一個目錄被刪除之前必須是空的。&#xff08;注意&#xff0c;rm - r dir命令可代替rmdir&#xff0c;但是有很大危險性。&#xff09;刪除某目錄時也必須具…

jvm系列(八):jvm知識點總覽

在江湖中要練就絕世武功必須內外兼備&#xff0c;精妙的招式和深厚的內功&#xff0c;武功的基礎是內功。對于武功低&#xff08;就像江南七怪&#xff09;的人&#xff0c;招式更重要&#xff0c;因為他們不能靠內功直接去傷人&#xff0c;只能靠招式&#xff0c;利刃上優勢來…

計算機基礎知識的文獻,四?計算機文獻檢索基礎知識(原理、結構和功能)

1.計算機檢索原理計算機一方面接受用戶的檢索提問&#xff0c;一方面從數據庫中讀取文獻記錄&#xff0c;然后把兩者進行比較&#xff0c;即檢索提問標識與文獻記錄標識進行匹配運算&#xff0c;如果比較的結果一致&#xff0c;那么這篇文獻就會作為命中文獻在檢索結果中顯示&a…

APP地推心得:可復制的APP地推方案

APP地推難&#xff1f;APP地推方案包含哪些&#xff1f;現在&#xff0c;不需要編程就能自己完成手機APP制作&#xff0c;而且還有大量的APP模板&#xff0c;可以直接套用。APP的制作資金技術大幅度降低&#xff0c;現在最大的問題就是怎么APP推廣的問題。 在移動互聯網的時代&…

【代碼筆記】iOS-播放從網絡上下載的語音

代碼&#xff1a; ViewController.m #import "ViewController.h" //錄音 #import <AVFoundation/AVFoundation.h>interface ViewController () {//播放器AVAudioPlayer *player; }endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];/…

C# 基于.NET6的CM+Fody+HC入門實戰項目(經典)

概述上期我們概述了CMFodyHC&#xff0c;如果之前沒有閱讀&#xff0c;可以先了解下&#xff1a;C# 為什么說CMFodyHC是WPF開發的最強組合&#xff1f;今天基于最新的VS版本、最新的CM框架版本&#xff0c;.NET基于6.0&#xff0c;搭建了一個WPF入門學習項目實例&#xff0c;關…