zoukankan      html  css  js  c++  java
  • 洛谷P2345 奶牛集会

    洛谷P2345 奶牛集会
    树状数组
    按 v 从小到大排序 消除 max 影响

     1 #include <bits/stdc++.h>
     2 #define For(i, j, k) for(int i=j; i<=k; i++)
     3 #define Dow(i, j, k) for(int i=j; i>=k; i--)
     4 #define LL long long
     5 using namespace std;
     6 inline int read() {
     7     int x = 0, f = 1;
     8     char ch = getchar();
     9     while(ch<'0'||ch>'9') { if(ch=='-') f = -1; ch = getchar(); }
    10     while(ch>='0'&&ch<='9') { x = x*10+ch-48; ch = getchar(); }
    11     return x * f;
    12 }
    13 void write(int x) {
    14     if(x<0) putchar('-'), x = -x;
    15     if(x>9) write(x/10);
    16     putchar(x%10+48);
    17 }
    18 inline void writeln(int x) { write(x); putchar('
    '); }
    19 
    20 const int N = 20011; 
    21 int n; 
    22 struct node{
    23     int v, pos; 
    24 }a[N];
    25 struct TT{
    26     LL sum; 
    27     int num; 
    28 }tree[N];
    29 LL sumpos, ans; 
    30 
    31 inline bool cmp_v(node a, node b) {
    32     return a.v < b.v; 
    33 }
    34 
    35 inline int lowbit(int x) { return x&(-x); }
    36 
    37 inline void add(int pos) {
    38     for(int x=pos; x<=20000; x+=lowbit(x) ) {
    39         ++tree[x].num;
    40         tree[x].sum += pos; 
    41     }
    42 }
    43 
    44 inline TT Query(int pos) {
    45     TT p; p.num = 0; p.sum = 0; 
    46     for(int x=pos; x; x-=lowbit(x)) {
    47         p.num += tree[x].num; 
    48         p.sum += tree[x].sum; 
    49     }
    50     return p; 
    51 }
    52 
    53 int main() {
    54     n = read(); 
    55     For(i, 1, n) {
    56         a[i].v = read(); a[i].pos = read(); 
    57     }
    58     sort(a+1, a+n+1, cmp_v); 
    59     For(i, 1, n) {
    60         TT p = Query(a[i].pos); 
    61         ans = ans+ a[i].v*(1ll*p.num*a[i].pos-p.sum + sumpos-p.sum-(1ll*i-1-p.num)*a[i].pos ); 
    62         sumpos += a[i].pos; 
    63         add(a[i].pos); 
    64     }
    65     printf("%lld
    ", ans); 
    66     return 0; 
    67 }
  • 相关阅读:
    自动化测试成功11333
    自动化测试成功11222
    自动化测试成功1111
    自动化测试成功112
    自动化测试成功18
    自动化测试成功1
    自动化测试成功
    富文本测试
    关于VMware虚拟机磁盘收缩的几种方法
    8个让你更有效率的简单方法
  • 原文地址:https://www.cnblogs.com/third2333/p/8456337.html
Copyright © 2011-2022 走看看