題意:給出乙個大小為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 ...