這道題作為前天的模擬賽題,考場上我在還剩乙個半小時的情況下居然選擇求穩打暴力,水過了40分,然後就坐看cansult和refun這倆dalaoak...
一開始我的想法是,把區間看成兩點之間不包含端點的小區間和端點構成的集合,然後分開處理,這個做法可能暴力還是可以的,然而如果要用線段樹的話,就要開兩顆線段樹
正確做法應該是把每個點拆成三個點,)就是標記第乙個點,】和【就是標記第二個點,(就是標記第三個點
然後我還把資料範圍》=0看成》=1,最後的輸出也很容易出錯
#include#include#include#define ls ((root<<1)+1)
#define rs ((root<<1)+2)
#define mid ((l+r)>>1)
using namespace std;
int n,n,a[400000];
struct orderq[200001];
struct nodetree[2000000];
void init()
}void pushdown(int root)
void mul(int root,int l,int r,int l1,int r1,int val)
pushdown(root);
if (l1<=mid) mul(ls,l,mid,l1,r1,val);
if (r1>mid) mul(rs,mid+1,r,l1,r1,val);
}void add(int root,int l,int r,int l1,int r1,int val)
pushdown(root);
if (l1<=mid) add(ls,l,mid,l1,r1,val);
if (r1>mid) add(rs,mid+1,r,l1,r1,val);
}int query(int root,int l,int r,int pos)
void build(int root,int l,int r)
build(ls,l,mid);
build(rs,mid+1,r);
}int main()
if (q[i].type==2)
if (q[i].r=1)
if (q[i].r
BZOJ3226 SDOI2008 校門外的區間
sdoi2008 校門外的區間 time limit 10 sec memory limit 128 mb description 受校門外的樹這道經典問題的啟發,a君根據基本的離散數學的知識,抽象出5種運算維護集合s s初始為空 並最終輸出s。現在,請你完成這道校門外的樹之難度增強版 校門外的區間...
SDOI2008 燒水問題
把總質量為1kg的水分裝在n個杯子裡,每杯水的質量均為 1 n kg,初始溫度均為0 現需要把每一杯水都燒開。我們可以對任意一杯水進行加熱。把一杯水的溫度公升高t 所需的能量為 4200 t n j,其中,j 是能量單位 焦耳 如果一旦某杯水的溫度達到100 那麼這杯水的溫度就不能再繼續公升高,此時...
SDOI2008 洞穴勘測
lct維護連通性型別的題目,主要是要搞清楚findroot函式的作用 判斷根是否相同,和並查集裡面的find 函式有異曲同工之妙,如果根相同可以認為兩個點具有連通性。先access打通一道到x的實邊,現在x是深度最大的節點。然後再splay x到根節點,因為它深度最大,這個時候它只有左子樹。所以找它...