巧克力王國 BZOJ 2850

2022-08-21 16:33:17 字數 2041 閱讀 3802

巧克力王國

【問題描述】

巧克力王國裡的巧克力都是由牛奶和可可做成的。但是並不是每一塊巧克力都受王國人民的歡迎,因為大家都不喜歡過於甜的巧克力。對於每一塊巧克力,我們設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,-10^9 <= a, b, x, y <= 10^9。

題解:考慮 ax + by - c 其實是平面上的一條直線,x、y就是點的橫座標和縱座標

要求 ax + by < c ,就是要求點在 ax + by - c 的下方

那麼就用kd樹就好了

程式中用了乙個 nth_element(a + l, a + m, a + r + 1, cmp) 函式

就是按cmp定義的大小規則,將a陣列中l到r中第m大的數放在第m位,比這個數小的數在第m位前,其他在第m位後(亂序)

1 #include2 #include3 #include4 #include5 #include6 #include7

#define lc(i) tr[i].l

8#define rc(i) tr[i].r

9#define mi_x(i) tr[i].mi_x

10#define ma_x(i) tr[i].ma_x

11#define mi_y(i) tr[i].mi_y

12#define ma_y(i) tr[i].ma_y

13#define sum(i) tr[i].sum

14 typedef long

long

lol;

15using

namespace

std;

16inline lol get()

1728

const

int me = 1000233;29

const lol inf = 214748364721474836

; 30

struct

dot31

39};

40dot a[me], tr[me];

41lol x, y, z;

42int

n, m;

43int

flag;

44lol ans;

45 inline bool

operator

< (const dot &a, const dot &b)

4650 inline void update(const

int &x)

5159

int build(const

int &l, const

int &r, const

int &e)

6070 inline int check(const

int &wx, const

int &wy)

7174 inline int pos(const

int &w)

7579

void ask(const

int &w)

8092

intmain()

93105 }

bzoj2850 巧克力王國

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

Bzoj2850 巧克力王國

time limit 60 sec memory limit 512 mb submit 505 solved 204 歡過於甜的巧克力。對於每一塊巧克力,我們設x和y為其牛奶和可可的含量。由於每個人對於甜的程度都有自己的 評判標準,所以每個人都有兩個引數a和b,分別為他自己為牛奶和可可定義的權重,...

bzoj2850 巧克力王國

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