奶牛集會
思路:把奶牛按照v排序;
然後,每次都把奶牛放入乙個集合s;
因為奶牛已經排序;
所以,每次第i次放入奶牛起作用的v就是vi;
每次ans+=(xi*sum-sumxl)*vi+(sumxr-xi*sum)*vi;
可以用線段樹實現;
來,上**:
#include #include#include
#include
using
namespace
std;
#define maxn 20005
struct
cowtype ;
struct
cowtype cow[maxn];
struct
treenodetype ;
struct treenodetype tree[maxn<<2
];int
n;long
long
ans,sx,ss;
inline
void
in(int &now)
}bool
cmp(cowtype aa,cowtype bb)
void tree_build(int now,int l,int
r)void tree_add(int now,int
to)
if(cow[to].xi<=tree[now].mid) tree_add(now<<1
,to);
else tree_add(now<<1|1
,to);
tree[now].xx=tree[now<<1].xx+tree[now<<1|1
].xx;
tree[now].sum=tree[now<<1].sum+tree[now<<1|1
].sum;
}void tree_query(int now,int l,int
r)
if(l>tree[now].mid) tree_query(now<<1|1
,l,r);
else
if(r<=tree[now].mid) tree_query(now<<1
,l,r);
else
}int
main()
cout
}
P2345 奶牛集會
約翰的n 頭奶牛每年都會參加 哞哞大會 哞哞大會是奶牛界的盛事。集會上的活動很多,比如堆乾草,跨柵欄,摸牛仔的屁股等等。它們參加活動時會聚在一起,第i 頭奶牛的座標為xi,沒有兩頭奶牛的座標是相同的。奶牛們的叫聲很大,第i 頭和第j 頭奶牛交流,會發出max xi xj 的音量,其中vi 和vj 分...
P2345 奶牛集會(樹狀陣列)
moofest,2004 open 約翰的n 頭奶牛每年都會參加 哞哞大會 哞哞大會是奶牛界的盛事。集會上的活動很 多,比如堆乾草,跨柵欄,摸牛仔的屁股等等。它們參加活動時會聚在一起,第i 頭奶牛的座標為xi,沒有兩頭奶牛的座標是相同的。奶牛們的叫聲很大,第i 頭和第j 頭奶牛交流,會發出max x...
P2345 奶牛集會(樹狀陣列or模擬)
moofest,2004 open 約翰的n 頭奶牛每年都會參加 哞哞大會 哞哞大會是奶牛界的盛事。集會上的活動很 多,比如堆乾草,跨柵欄,摸牛仔的屁股等等。它們參加活動時會聚在一起,第i 頭奶牛的座標為xi,沒有兩頭奶牛的座標是相同的。奶牛們的叫聲很大,第i 頭和第j 頭奶牛交流,會發出max x...