当前位置:网站首页>729. My schedule I (set or dynamic open point segment tree)
729. My schedule I (set or dynamic open point segment tree)
2022-07-06 04:16:00 【Harris-H】
729. My schedule I(set or Dynamic open point line segment tree )
Interval coverage , Interval query . Therefore, the value range is large , Small number of queries , So open it dynamically .
The tree building method is similar to the ordinary segment tree , Namely pushdown It is decided whether the left and right sons are empty , Then all functions can use pointers .
Time complexity : O ( n l o g C ) O(nlogC) O(nlogC)
class MyCalendar {
public:
struct node{
node *l,*r;
int s,lz;
};
node * rt = new node();
const int NN = 1e9;
MyCalendar() {
}
void re(node* a){
a->s=a->l->s|a->r->s;
}
void pd(node* a){
if(a->l==NULL) a->l= new node();
if(a->r==NULL) a->r= new node();
if(!a->lz) return;
a->l->s=a->lz;
a->r->s=a->lz;
a->l->lz=a->r->lz=a->lz;
a->lz=0;
}
void upd(node *a,int l,int r,int L,int R,int v){
if(l>=L&&r<=R){
a->s=v;
a->lz=v;return;
}
pd(a);
int m = l+r>>1;
if(L<=m) upd(a->l,l,m,L,R,v);
if(R>m) upd(a->r,m+1,r,L,R,v);
re(a);
}
bool que(node *a,int l,int r,int L,int R){
if(l>=L&&r<=R) return a->s;
int m = l+r>>1;
pd(a);
int ok=0;
if(L<=m) ok|=que(a->l,l,m,L,R);
if(R>m) ok|=que(a->r,m+1,r,L,R);
return ok;
}
bool book(int st, int ed) {
if(que(rt,0,NN,st,ed-1)) return false;
upd(rt,0,NN,st,ed-1,1);
return true;
}
};
set, Practice every time lower_bound l>=ed Of Location p p p.
And then determine ( − − p ) → r ≤ s t < e d ≤ l (--p)\rightarrow r\le st<ed\le l (−−p)→r≤st<ed≤l
Time complexity : O ( n l o g n ) O(nlogn) O(nlogn)
class MyCalendar {
set<pair<int, int>> booked;
public:
bool book(int start, int end) {
auto it = booked.lower_bound({
end, 0});
if (it == booked.begin() || (--it)->second <= start) {
booked.emplace(start, end);
return true;
}
return false;
}
};
边栏推荐
- Fundamentals of SQL database operation
- Practical development of member management applet 06 introduction to life cycle function and user-defined method
- HotSpot VM
- Benefits of automated testing
- In depth MySQL transactions, stored procedures and triggers
- MySQL master-slave replication
- P2648 make money
- Cross domain and jsonp details
- Class A, B, C networks and subnet masks in IPv4
- [introduction to Django] 11 web page associated MySQL single field table (add, modify, delete)
猜你喜欢

Practical development of member management applet 06 introduction to life cycle function and user-defined method

Stable Huawei micro certification, stable Huawei cloud database service practice

What is the difference between gateway address and IP address in tcp/ip protocol?

Query the number and size of records in each table in MySQL database

In depth MySQL transactions, stored procedures and triggers

Path of class file generated by idea compiling JSP page

解决“C2001:常量中有换行符“编译问题
![[Key shake elimination] development of key shake elimination module based on FPGA](/img/47/c3833c077ad89d4906e425ced945bb.png)
[Key shake elimination] development of key shake elimination module based on FPGA

VNCTF2022 WriteUp

During pycharm debugging, the view is read only and pause the process to use the command line appear on the console input
随机推荐
POI add border
Lombok principle and the pit of ⽤ @data and @builder at the same time
颠覆你的认知?get和post请求的本质
Fedora/REHL 安装 semanage
Unity中几个重要类
Thread sleep, thread sleep application scenarios
Overturn your cognition? The nature of get and post requests
Ipv4中的A 、B、C类网络及子网掩码
HotSpot VM
使用JS完成一个LRU缓存
Global and Chinese markets for endoscopic drying storage cabinets 2022-2028: Research Report on technology, participants, trends, market size and share
Lora gateway Ethernet transmission
MySQL learning record 13 database connection pool, pooling technology, DBCP, c3p0
2328. 网格图中递增路径的数目(记忆化搜索)
View 工作流程
Comprehensive ability evaluation system
PTA tiantisai l1-078 teacher Ji's return (15 points) detailed explanation
1291_ Add timestamp function in xshell log
综合能力测评系统
[face recognition series] | realize automatic makeup