小明對某些事物十分好奇,不過這次他卻十分格式化地和你說話:
給你t個組,每組有兩個數x,y。
一共q次查詢,給你乙個flag,與l,r
當flag=1時,每次查詢區間[l,r] 這些組中乙個最大的x,
當flag=0時,每次查詢區間[l,r] 這些組中乙個最大的y。
輸入第一行有兩個整數t,q分別表示組數,與查詢次數。
接下來t行,每行三個整數ci,xi,yi,分別表示組的類別,x,y值。
接下來q行,每行三個整數fi,li,ri,f如題目描述中所述,表示查詢型別,l,r表示查詢區間,資料保證r>l,f只為1與0。
輸出共q行,每行乙個整數,表示所詢問的答案。
3 21 4 9
4 5 20
5 30 5
1 2 3
0 1 2
3020
對於30%的資料t≤100000,q≤100000
對於60%的資料t≤100000,q≤1000000
對於100%的資料t≤1000000,q≤1000000
所有資料均為非負整數,且都不大於2147483647(int範圍內)。
線段樹裸題
#include using namespace std;
const int maxn=1000000+6;
int n,a[maxn],b[maxn],q;
struct node
}tree[maxn*4];
void push_up(int x)
void push_down(int x)
}void build(int x,int l,int r)
else}/*
void update(int x,int l,int r,long long val)}*/
int query_x(int x,int l,int r)
}int query_y(int x,int l,int r)
}int main()
build(1,1,n);
// scanf("%d",&q);
for(int i=1;i<=q;i++)
return 0;
}
hdu4521 小明系列問題 小明序列 線段樹
題意 有多組測試資料,每組資料的n和d表示,有n個數,求間距大於d的最長上公升序列。題解 1 按權值從小到大排序,權值相同的時候按下標從大到小排序。2 線段樹維護符合條件的上公升子串行,然後去找當前情況在其前面符合間距的範圍裡找當前最長的上公升子串行,再更新進去就可。include include ...
HDU 4521 小明序列 線段樹 DP
題目鏈結 include include include include include include include include includeusing namespace std const int maxn 100005 const int inf 1 30 0x7f int n,d ...
csu 1949 小明的煩惱 並查集 權值線段樹
題目鏈結 思路 首先,對於每個員工之間的合併,可以採用並查集來解決這件事.那麼主要的問題就是如何求這個集合中第k大的數.這裡採用權值線段樹來合併,大體的權值線段樹,就是我們當時用來求逆序數的用法。題目中是2e5的資料範圍,那麼我們初始對每個員工建立乙個樹,然後記錄下他的根節點和他的左右子節點,合併時...