HDU 5316 Magician 區結合並

2021-07-11 17:42:38 字數 889 閱讀 2647

題意:給出乙個大小為n的區間,2種操作,更新某乙個點的值,或者查詢[l,r]區間的「最大值序列」(要求該序列的下標奇偶相間)

思路:線段樹的單點更新和區間合併可以實現題目要求,我們維護4個資料就好,查詢的比較特殊

(1).區間裡最大的以奇數開頭和以奇數結尾的序列

(2).區間裡最大的以偶數開頭和以偶數結尾的序列

(3).區間裡最大的以奇數開頭和以偶數結尾的序列

(4).區間裡最大的以偶數開頭和以奇數結尾的序列

#include #include #include #include #define ll long long

#define maxn 100030

#define inf 100000000030

#define data tree

using namespace std;

struct tree

tree[maxn*5];

ll s[maxn];

void pushup(int root)

void build(int root,int l,int r)

int mid=(l+r)>>1;

build(root<<1,l,mid);

build(root<<1|1,mid+1,r);

pushup(root);

}void update(int root,int p,int val)

int mid=(tree[root].l+tree[root].r)>>1;

if (mid>=p) update(root<<1,p,val);

else if (mid>1;

if (mid>=r)

return query(root<<1,l,r);

else if (mid

hdu 1698 區間更新

基礎題 初學 include include using namespace std define lson l m rt 1 define rson m 1 r rt 1 1 const int maxn 101000 int h w n int col maxn 2 標記是否當前節點梗係 int...

hdu 4883 區間選點

昨天比賽的時候沒有做出來,本來是想用貪心的,但是貪了好久都沒有招,今天在網上搜了解題報告 好像說這是一類區間選點問題 有乙個好的做法 1 首先把題目中的時間全轉化為分鐘,那麼區間就在0 1440中間 2 對於n組人,有乙個si 和乙個ei,那麼開個陣列,cnt si d cnt ei d 3 也就是...

hdu5812 區間操作

題意 給兩個數字序列a,b,在給出m次區間,每次區間操作可以對l i r i 間的數字進行任意排列,問序列a能否在m次操作後變為序列b.思路 貪心思想,每次操作都使a i 盡可能的靠近它的期望位置,所以對每個操作區間按照它的期望位置排序,結果和b序列一樣那就yes。o n 2 可以處理出每個a i ...