集訓隊互測2015 Robot

2022-07-13 19:33:11 字數 2331 閱讀 5399

題目描述

題解

維護兩顆線段樹,維護最大值和最小值,因為每次只有單點查詢,所以可以直接在區間插入線段就可以了。

注意卡常,不要寫stl,用鍊錶把同類修改串起來就好了。

**

%:pragma gcc optimize(2

)%:pragma gcc optimize(3

)#include

#include

#include

#include

#include

#include

#define n 600009

using

namespace

std;

typedef

long

long

ll;struct

node;

intn,m,la[n],pre[n];

ll t[n],pos[n],b[n],top,now[n],k[n],x[n],tag[n];

char s[10

];inline ll rd()

while(isdigit(c))

return f?-x:x;

}inline ll calc(ll l,ll r,ll x,ll k)

struct

segment1tr[n

<<1

];

inttot,root;

void work(int &cnt,int l,int

r,ll x,ll k)

ll x1=calc(b[l],b[mid],x,k),x2=calc(b[l],b[mid],tr[cnt].x,tr[cnt].k);

if(x1>=x2)

if(l==r)return

;

if(x>=tr[cnt].x)work(tr[cnt].l,l,mid,x,k);else work(tr[cnt].r,mid+1,r,x+(b[mid+1]-b[l])*k,k);

} void upd(int &cnt,int l,int r,int l,int

r,ll x,ll k)

int mid=(l+r)>>1

;

if(mid>=l)upd(tr[cnt].l,l,mid,l,r,x,k);

if(mid1

,r,l,r,x,k);

}}t1;

struct

segment2tr[n

<<1

];

inttot,root;

void work(int &cnt,int l,int

r,ll x,ll k)

ll x1=calc(b[l],b[mid],x,k),x2=calc(b[l],b[mid],tr[cnt].x,tr[cnt].k);

if(x1<=x2)

if(l==r)return

;

if(x<=tr[cnt].x)work(tr[cnt].l,l,mid,x,k);else work(tr[cnt].r,mid+1,r,x+(b[mid+1]-b[l])*k,k);

} void upd(int &cnt,int l,int r,int l,int

r,ll x,ll k)

int mid=(l+r)>>1

;

if(mid>=l)upd(tr[cnt].l,l,mid,l,r,x,k);

if(mid1

,r,l,r,x,k);

}}t2;

ll query(

intx)

ans2=llabs(ans2);

return

max(ans1,ans2);

}int

main()

}t[m+1]=t[m]+1;b[++top]=0;b[++top]=t[m]+1

; sort(b+1,b+top+1

); top=unique(b+1,b+top+1)-b-1

;

for(int i=1;i<=m;++i)t[i]=lower_bound(b+1,b+top+1,t[i])-b;

for(int i=1;i<=n;++i)

for(int i=1;i<=n;++i)

for(int i=1;i<=m;++i)

else printf("

%lld\n

",query(t[i]));

}return0;

}

集訓隊互測2015 最大異或和

首先不知道有沒有神仙線段樹分治過的。首先乙個較為顯然的性質 mathrm mathrm 這個啟發我們維護差分序列,此時1操作變成了單點異或,2操作變成了單點異或以及區間清空。但是這道題維護的是線性基,所以要用帶刪除的線性基實現。具體見 集訓隊作業2018 圍繞著我們的圓環 此時單點異或顯然可以變成插...

集訓隊互測 2012 Attack

description chnlich非常喜歡玩三國志這款遊戲,並喜歡用一些策略出奇制勝。現在,他要開始征服世界的旅途了。他的敵人有n nn座城市和n nn個太守,n nn個城市可以看作在二維平面上的n nn個點。n nn座城市的標號為0,1 2,n 1 0,1,2,cdots,n 1 0,1,2,...

集訓隊互測2013 城市規劃

求n個點的帶標號連通簡單圖的個數。答案對1004535809取模。n 130000 根據套路,首先我們需要求出n個點的帶標號簡單圖的個數,設為g n 顯然我們有g n 2 n n 1 2 考慮設答案為f n 要怎麼求出?列舉1號點所在的聯通塊的大小,我們可以知道 g n i 1n f i ci 1 ...