Bzoj2850 巧克力王國

2022-05-13 16:09:27 字數 1696 閱讀 9321

time limit: 60 sec  memory limit: 512 mb

submit: 505  solved: 204

歡過於甜的巧克力。對於每一塊巧克力,我們設x和y為其牛奶和可可的含量。由於每個人對於甜的程度都有自己的

評判標準,所以每個人都有兩個引數a和b,分別為他自己為牛奶和可可定義的權重,因此牛奶和可可含量分別為x

和y的巧克力對於他的甜味程度即為ax + by。而每個人又有乙個甜味限度c,所有甜味程度大於等於c的巧克力他都

無法接受。每塊巧克力都有乙個美味值h。現在我們想知道對於每個人,他所能接受的巧克力的美味值之和為多少

第一行兩個正整數n和m,分別表示巧克力個數和詢問個數。接下來n行,每行三個整數x,y,h,含義如題目所示。再

接下來m行,每行三個整數a,b,c,含義如題目所示。

輸出m行,其中第i行表示第i個人所能接受的巧克力的美味值之和。

3 31 2 5

3 1 4

2 2 1

2 1 6

1 3 5

1 3 750

41 <= n, m <= 50000,1 <= 10^9,-10^9 <= a, b, x, y <= 10^9。

violet 0

k-d tree

以x和y為座標,通過ax+by估價來優化查詢

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7const

int mxn=100010;8

intread()

11while(ch>='

0' && ch<='9')

12return x*f;13}

14struct

nodet[mxn];

20int nowd=0;21

int cmp(const node a,const

node b)

24int root,nct=0;25

intn,m;

26long

long a,b,c,ans=0

; 27

void pushup(int rt,int

x)34

int build(int l,int r,int

d)41

if(r!=mid)

42 t[mid].sum=t[t[mid].l].sum+t[t[mid].r].sum+t[mid].v;

43return

mid;44}

45 inline bool pd(long

long x,long

long y)

46int cnt(int

rt)54

void query(int

rt)//

還要算r所以不能return

60else

if(l)query(t[rt].l);

61if(r==4)

62else

if(r)query(t[rt].r);

63return;64

}65intmain()

71 root=build(1,n,0

);72

for(i=1;i<=m;i++)

78return0;

79 }

bzoj2850 巧克力王國

description 巧克力王國裡的巧克力都是由牛奶和可可做成的。但是並不是每一塊巧克力都受王國人民的歡迎,因為大家都不喜 歡過於甜的巧克力。對於每一塊巧克力,我們設x和y為其牛奶和可可的含量。由於每個人對於甜的程度都有自己的 評判標準,所以每個人都有兩個引數a和b,分別為他自己為牛奶和可可定義的...

bzoj2850 巧克力王國

以x和 y作為座標建立 kdtree 然後維護某一棵子樹內的美味值之和,如果同一顆子樹的四個角的甜味都小於 h,那麼就可以直接累加進去。雖然這樣的最壞時間複雜度仍然是 o n 但可以卡過去。1 include2 using namespace std 3 define n 50005 4 defin...

巧克力王國 BZOJ 2850

巧克力王國 問題描述 巧克力王國裡的巧克力都是由牛奶和可可做成的。但是並不是每一塊巧克力都受王國人民的歡迎,因為大家都不喜歡過於甜的巧克力。對於每一塊巧克力,我們設x和y為其牛奶和可可的含量。由於每個人對於甜的程度都有自己的評判標準,所以每個人都有兩個引數a和b,分別為他自己為牛奶和可可定義的權重,...