zoukankan      html  css  js  c++  java
  • MooFest POJ

    MooFest

     POJ - 1990 

     高级数据结构p203

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 using namespace std;
     7 #define LL long long 
     8 const int maxn = 20010;
     9 
    10 LL dis[maxn], cnt[maxn];
    11 int n; 
    12 
    13 struct Cow{
    14     int v, p;
    15     bool operator < (const Cow& a)const{
    16         return v < a.v;
    17     }
    18 }c[maxn];
    19 
    20 void init(){
    21     memset(dis, 0, sizeof dis);
    22     memset(cnt, 0, sizeof cnt);
    23 }
    24 LL sum(int i, LL *c){
    25     LL res = 0;
    26     for(; i; i -= i & -i) res += c[i];
    27     return res;
    28 }
    29 void add(int i, int v, LL *c){
    30     for(; i <= maxn; i += i & -i) c[i] += v;
    31 }
    32 int main(){
    33     while(scanf("%d", &n) != EOF){
    34         init();
    35         for(int i = 1; i <= n; i++){
    36             scanf("%d %d", &c[i].v, &c[i].p);
    37         }
    38         sort(c + 1, c + n + 1);
    39         LL tot = 0, ans = 0;
    40         for(int i = 1; i <= n; i++){
    41             LL cnt1 = sum(c[i].p, cnt), sum1 = sum(c[i].p, dis);
    42             LL cnt2 = i - 1 - cnt1, sum2 = tot - sum1;
    43             ans += c[i].v * (cnt1 * c[i].p - sum1 + sum2 - cnt2 * c[i].p);
    44             tot += c[i].p;
    45             add(c[i].p, c[i].p, dis);
    46             add(c[i].p, 1, cnt);
    47         }
    48         printf("%lld
    ", ans);
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    python实现从生成器中取固定角标的元素
    python-高阶函数
    git学习手册
    python批量进行文件修改操作
    python第一站
    LoadRunner,一个简单的例子
    python3中urllib2的问题
    gitlab 随笔
    sed 删除文本
    sed 修改文本
  • 原文地址:https://www.cnblogs.com/yijiull/p/8358957.html
Copyright © 2011-2022 走看看