poj-3667(線段樹區間合并)

題目鏈接:傳送門

參考文章:傳送門

思路:線段樹區間合并問題,每次查詢到滿足線段樹的區間最左值,然后更新線段樹。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 50500;
int lsum[maxn<<2],rsum[maxn<<2],msum[maxn<<2],cover[maxn<<2];
void build(int x,int l,int r)
{lsum[x]=rsum[x]=msum[x]=r-l+1;if(l==r) return ;int mid=(l+r)>>1;build(x<<1,l,mid);build(x<<1|1,mid+1,r);
}
int MAX(int x,int y)
{return x>y?x:y;
}
void pushup(int x,int k)
{lsum[x]=lsum[x<<1];rsum[x]=rsum[x<<1|1];msum[x]=MAX(MAX(msum[x<<1],msum[x<<1|1]),lsum[x<<1|1]+rsum[x<<1]);if(lsum[x<<1]==(k-(k>>1))) lsum[x]+=lsum[x<<1|1];if(rsum[x<<1|1]==k>>1) rsum[x]+=rsum[x<<1];
}
void pushdown(int x,int k)
{if(cover[x]!=-1){cover[x<<1]=cover[x<<1|1]=cover[x];lsum[x<<1]=rsum[x<<1]=msum[x<<1]=cover[x]?0:(k-(k>>1));lsum[x<<1|1]=rsum[x<<1|1]=msum[x<<1|1]=cover[x]?0:(k>>1);cover[x]=-1;}
}
void update(int x,int l,int r,int A,int B,int Item)
{if(A<=l&&r<=B) {cover[x]=Item;lsum[x]=rsum[x]=msum[x]=Item?0:r-l+1;return ;}pushdown(x,r-l+1);int mid=(l+r)>>1;if(A<=mid) update(x<<1,l,mid,A,B,Item);if(B>mid) update(x<<1|1,mid+1,r,A,B,Item);pushup(x,r-l+1);
}
int query(int x,int l,int r,int len)
{if(l==r) return 1;pushdown(x,r-l+1);int mid=(l+r)>>1;if(msum[x<<1]>=len) return query(x<<1,l,mid,len);else if(rsum[x<<1]+lsum[x<<1|1]>=len) return mid-rsum[x<<1]+1;else return query(x<<1|1,mid+1,r,len);
}
int main(void)
{int n,m,i,x,y,z;while(~scanf("%d%d",&n,&m)){build(1,1,n);while(m--){scanf("%d",&x);if(x==1){scanf("%d",&y);if(msum[1]<y){printf("0\n");continue;}z=query(1,1,n,y);printf("%d\n",z);update(1,1,n,z,z+y-1,1);}else{scanf("%d%d",&y,&z);update(1,1,n,y,y+z-1,0);}}}return 0;
}
View Code

?

http://poj.org/problem?id=3667

轉載于:https://www.cnblogs.com/2018zxy/p/10204329.html

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

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

相關文章

面試題編程題11-python 生成隨機數

隨機整數&#xff1a; random.randint(a,b), [a,b] random.randrange(a,b,step) [a,b) 隨機實數 random.random()返回0 到1 之間的浮點數轉載于:https://www.cnblogs.com/feihujiushiwo/p/10922454.html

車牌識別之顏色選取

車牌定位是車牌識別中第一步&#xff0c;也是最重要的一步。 由于中國車牌種類多樣&#xff0c;顏色不一&#xff0c; 再加上車牌經常有污損&#xff0c;以及車牌周圍干擾因素太多&#xff0c;都成為了車牌定位的難點。 這里首先使用最簡單算法來描述車牌定位&#xff0c;以及他…

Python - 排序( 插入, 冒泡, 快速, 二分 )

插入排序 算法分析 兩次循環, 大循環對隊列中的每一個元素拿出來作為小循環的裁定對象 小循環對堆當前循環對象在有序隊列中尋找插入的位置 性能參數 空間復雜度  O(1) 時間復雜度  O(n^2) 詳細代碼解讀 import randomdef func(l):# 外層循環: 對應遍歷所有的無序數據for i…

[EmguCV|C#]使用CvInvoke自己繪製色彩直方圖-直方圖(Hitsogram)系列(4)

2014-02-0610325 0C# 檢舉文章 過年結束了&#xff0c;雖然還是學生所以其實還有兩個禮拜的假期&#xff0c;不過為了不讓自己發慌&#xff0c;趁著假期多利用充實自己&#xff0c;所以提早回到開工狀態&#xff0c;而這次總算要把一直說的自己動手繪製猜色直方圖文章寫出。 …

G.點我

鏈接&#xff1a;https://ac.nowcoder.com/acm/contest/903/G 題意&#xff1a; X腿與隊友到河北省來參加2019河北省大學生程序設計競賽&#xff0c;然而這場比賽的題目難度實在是太高了。比賽開始一個小時后&#xff0c;X腿仍然沒有做出一個題。這時候&#xff0c;X腿驚訝的發…

輪廓的查找、表達、繪制、特性及匹配(How to Use Contour? Find, Component, Construct, Features Match)

前言 輪廓是構成任何一個形狀的邊界或外形線。前面講了如何根據色彩及色彩的分布&#xff08;直方圖對比和模板匹配&#xff09;來進行匹配&#xff0c;現在我們來看看如何利用物體的輪廓。包括以下內容&#xff1a;輪廓的查找、表達方式、組織方式、繪制、特性、匹配。 查…

Android:IntentService的學習

在Android的四大組件中&#xff0c;Service排行老二&#xff0c;在Android中的主要作用是后臺服務&#xff0c;進行與界面無關的操作。由于Service運行在主線程&#xff0c;所以進行異步操作需要在子線進行。為此Android為我們提供了IntentService。 IntentService是一個抽象類…

智能商業大會構造信息化交流平臺

在快速發展的當今社會&#xff0c;所有事物都在日新月異地變化著&#xff0c;相較于過去的傳統商業的變化速度&#xff0c;現今基于數據的互聯網商業變化速度高出了一個量級&#xff0c;同時市場對于企業的應對速度也有了更高的要求&#xff0c;然而面對大體量的數據&#xff0…

itcast-ssh-crm實踐

分析 BaseDao 文件上傳 轉載于:https://www.cnblogs.com/hellowq/p/10209761.html

分類器大牛們

David Lowe&#xff1a;Sift算法的發明者&#xff0c;天才。 Rob Hess&#xff1a;sift的源碼OpenSift的作者&#xff0c;個人主頁上有openSift的下載鏈接&#xff0c;Opencv中sift的實現&#xff0c;也是參考這個。 Koen van de Sande&#xff1a;作者給出了sift,densesift,co…

go 成長路上的坑(1)

一、先來看一段代碼 package mainimport "fmt"type X struct{}func (x *X) test(){println("h1",x) } func main(){a : X{} a.test()(&X{}).test()(X{}).test() } 猜猜他的結果 二、揭曉答案 package mainimport "fmt"type X struct{}func (…

利用python腳本程序監控文件被修改

需求&#xff1a;利用python編寫監控程序&#xff0c;監控一個文件目錄&#xff0c;當目錄下的文件發生改變時&#xff0c;實現有修改就發報警郵件 郵件使用QQ郵箱&#xff0c;需要開啟smtp&#xff0c;使用手機發生短信&#xff0c;騰訊會給你發郵箱密碼。如下所示&#xff1a…

Oracle RAC

環境如下&#xff1a; Linux操作系統&#xff1a;Centos 6.5 64bit &#xff08;這個版本的redhat 6內核等OS在安裝grid最后執行root.sh時會出現crs-4124&#xff0c;是oracle11.2.0.1的bug&#xff09; VMware version&#xff1a;Workstation 8.0.3 build-703057 Oracle…

好程序員web前端分享MVVM框架Vue實現原理

好程序員web前端分享MVVM框架Vue實現原理&#xff0c;Vue.js是當下很火的一個JavaScript MVVM庫&#xff0c;它是以數據驅動和組件化的思想構建的。相比于Angular.js和react.js更加簡潔、更易于理解的API&#xff0c;使得我們能夠快速地上手并使用Vue.js。?1.什么是MVVM呢&…

HDU - 3516 Tree Construction

HDU - 3516 思路&#xff1a; 平行四邊形不等式優化dp &#xff1a;&#xff09; 代碼&#xff1a; #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc.h> using namespace std; #define y1 y11 #define fi first #define se…

各類總線傳輸速率

1. USB總線 USB1.1&#xff1a; -------低速模式(low speed)&#xff1a;1.5Mbps -------全速模式(full speed)&#xff1a; 12Mbps USB2.0&#xff1a;向下兼容。增加了高速模式&#xff0c;最大速率480Mbps。 -------高速模式(high speed)&#xff1a; 25~480Mbps US…

Activiti多人會簽例子

Activiti中提供了多實例任務&#xff08;for-each&#xff09;將多實例應到到UserTask中可以實現會簽功能。 Multi-instance (for each) Description A multi-instance activity is a way of defining repetition for a certain step in a business process. In programming …

Django 【認證系統】auth

本篇內容 介紹Django框架提供的auth 認證系統 方法&#xff1a; 方法名 備注 create_user 創建用戶 authenticate 登錄驗證 login 記錄登錄狀態 logout 退出用戶登錄 is_authenticated 判斷用戶是否登錄 login_required裝飾器 進行登錄判斷 引入模塊 from django.…

兒科常見疾病的中成藥療法

孩子感冒&#xff0c;分清寒熱是關鍵——兒童風寒感冒和風熱感冒的中成藥內服外治法 兒童不養兒不知父母恩&#xff0c;每個人恐怕都只有自己做了父母&#xff0c;才能感受到父母的愛。嬰幼兒正處于最初的發育期&#xff0c;抵抗力弱&#xff0c;有個感冒發燒的也是常有的事兒。…

物化視圖

有個項目因為有比較多的查詢匯總&#xff0c;考慮到速度&#xff0c;所以使用了物化視圖。簡單的把用到的給整理了下。先看簡單創建語句&#xff1a;create materialized view mv_materialized_test refresh force on demand start with sysdate nextto_date(concat(to_char( s…