P2345 奶牛集會

2021-09-25 08:39:38 字數 1373 閱讀 6766

約翰的n 頭奶牛每年都會參加「哞哞大會」。哞哞大會是奶牛界的盛事。集會上的活動很多,比如堆乾草,跨柵欄,摸牛仔的屁股等等。它們參加活動時會聚在一起,第i 頭奶牛的座標為xi,沒有兩頭奶牛的座標是相同的。奶牛們的叫聲很大,第i 頭和第j 頭奶牛交流,會發出max×|xi − xj | 的音量,其中vi 和vj 分別是第i 頭和第j 頭奶牛的聽力。

假設每對奶牛之間同時都在說話,請計算所有奶牛產生的音量之和是多少。

• 第一行:單個整數n,1 ≤ n ≤ 20000

• 第二行到第n + 1 行:第i + 1 行有兩個整數vi 和xi,1 ≤ vi ≤ 20000; 1 ≤ xi ≤ 20000

• 單個整數:表示所有奶牛產生的音量之和

431

2526

43

57
第i頭牛和其他的牛發出的生意就等於=第i頭牛的vi*(它之前牛的數目它的座標-它之前所有牛的座標和)+vi(它之後所有牛的座標和-它之後牛的數目*他的座標),對於牛的數目和牛的座標,我們都可以用樹狀陣列來維護

#include

#define m(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3f

#define mod 1000000009

using

namespace std;

inline

void

read

(long

long

&x)while

(ch>=

'0'&& ch<=

'9')

if(c==

'-')x=

-x;}

long

long wz[

20010

],yy[

20010

],n,mn=

20000

;long

long ans;

struct nodea[

20010];

bool

cmp(node x,node y)

intlobit

(int x)

void

crwz

(int x)

intz

(int x)

void

cryy

(int x,

int v)

inty

(int x)

intjdz

(int x)

intmain()

printf

("%lld"

,ans)

;return0;

}

P2345 奶牛集會(樹狀陣列)

moofest,2004 open 約翰的n 頭奶牛每年都會參加 哞哞大會 哞哞大會是奶牛界的盛事。集會上的活動很 多,比如堆乾草,跨柵欄,摸牛仔的屁股等等。它們參加活動時會聚在一起,第i 頭奶牛的座標為xi,沒有兩頭奶牛的座標是相同的。奶牛們的叫聲很大,第i 頭和第j 頭奶牛交流,會發出max x...

P2345 奶牛集會(樹狀陣列or模擬)

moofest,2004 open 約翰的n 頭奶牛每年都會參加 哞哞大會 哞哞大會是奶牛界的盛事。集會上的活動很 多,比如堆乾草,跨柵欄,摸牛仔的屁股等等。它們參加活動時會聚在一起,第i 頭奶牛的座標為xi,沒有兩頭奶牛的座標是相同的。奶牛們的叫聲很大,第i 頭和第j 頭奶牛交流,會發出max x...

P2345 奶牛集會(樹狀陣列 CDQ分治)

題目描述 約翰的n 頭奶牛每年都會參加 哞哞大會 哞哞大會是奶牛界的盛事。集會上的活動很多,比如堆乾草,跨柵欄,摸牛仔的屁股等等。它們參加活動時會聚在一起,第i 頭奶牛的座標為xi,沒有兩頭奶牛的座標是相同的。奶牛們的叫聲很大,第i 頭和第j 頭奶牛交流,會發出max xi xj 的音量,其中vi ...