POJ 1990 — MooFest
好久没大更新了,把最近做的一些题的题解发上来.
_gXX 19:27:46
一群奶牛 = =
_gXX 19:27:51
排成一排
_gXX 19:28:07
但是有点耳聋 = = 所以每个牛都有个听力值
_gXX 19:28:22
他们互相说话的花费就是两个牛的听力值的较大值*距离 = =
_gXX 19:28:29
现在所有牛都要互相说话
_gXX 19:28:31
问 = =
_gXX 19:28:35
要耗费多少啦…
题意大概就是这样,听力值解释为耳聋值更合理一些…
然后呢,按照耳聋值排序,依次处理每一个奶牛.对于排序后的奶牛i,它与1~i-1说话时,较大的一定是i的听力值.这样只需要用i的听力值乘以i与1~i-1所有奶牛的距离和就可以.维护距离可以用树状数组两个,其中一个维护每个坐标上有多少个奶牛,另一个则是存储每个坐标上奶牛个数和坐标值的乘积.
发现我写这东西写得让人看不懂了555…看程序吧.
{
POJ 1990; MooFest
- sqybi’s code
- 树状数组
}
//for my winsty
program pku1990_sqybi;
const
nn = 20000;
xx = 20000;
type
TTreeArray = object
a: array[1..xx]of int64;
procedure init;
function lowbit(x: longint): longint;
procedure add(x, y: longint);
function sum(x: longint): int64;
end;
[...]