今日頭條(3 30)第四題(離線)

2022-04-30 12:48:07 字數 946 閱讀 7733

題意:n對(a,b),q次查詢(x,y) a>=x&&b>=y的對數

對於100%資料,1<=所有的數<=1e5

1 #include2

using

namespace

std;

3const

int maxn=1e5+5;4

inta[maxn],b[maxn],c[maxn];

5int

x[maxn],y[maxn],z[maxn];

6int

ans[maxn],sum[maxn];7/*

8求ai>=x&&bi>=y的個數,有q組詢問

9如果保證ai>=x,那麼只要保證查詢bi>=y的有多少個就可以了

10把a b按照a從大到小排序

11把x y按照x從大到小排序

12這樣,對於乙個(xi,yi)只要把所有a>=xi的,b加入樹狀陣列或者線段數

13就能很快的查詢b>=yi的個數

14n個數插入樹狀陣列一次,複雜度o(nlog maxn)

15總共查詢q次,複雜度o(nlog maxn)

16總體複雜度o((n+q)log maxn)

17*/

1819

bool cmp1(int i,int

j)23

bool cmp2(int i,int

j)27

28int lowbit(int x)

2930

int add(int

x)35}36

37int sum(int

x)43

return

ret;44}

45int

main()

6465

for(int i=0;i)

66 cout6768

return0;

69 }

今日頭條程式設計題

第一題 p為給定的二維平面整數點集。定義 p 中某點x,如果x滿足 p 中任意點都不在 x 的右上方區域內 橫縱座標都大於x 則稱其為 最大的 求出所有 最大的 點的集合。所有點的橫座標和縱座標都不重複,座標軸範圍在 0,1e9 內 如下圖 實心點為滿足條件的點的集合。請實現 找到集合 p 中的所有...

演算法題 2018今日頭條程式設計題二

使用dp i,j 表示區間 i,j 能得到計算值的最大值 k表示區間 i,j 的最小值min的下標索引 則序列結構可表示如下 i,k 1 min k 1,j i,j 所有子區間分為兩種情況 包含min 不包含min 在所有包含min的子區間 m,n 中,計算值 mi n su m m,n mi n ...

演算法題 2018今日頭條程式設計題一

維持乙個當前邊界點的陣列,按x從小到達排序,由於是邊界點,故其y對應是從大到小排序的。對於乙個新加入的點,分別按x和y座標值二分查詢其在邊界點陣列中的位置 iter x iter y include include include include include include using name...