zoukankan      html  css  js  c++  java
  • poj 2231

    题目:http://poj.org/problem?id=2231

    题意:给出 n 头牛,给出 n 头牛的位置,求出每头牛到其他牛的距离的总和

    按给的牛的位置从小到大排序,假设 第 i 头牛的位置为 xi ,那么它前面的牛的个数假设是 N 个,并且我们可以求出它前面这些牛的 x (位置)值的和 记为 sum,那么它前面的这些牛到他的距离就是 N * xi - sum,同样处理它后面的那些牛的距离,对每头牛都这样处理后,把每头牛到其他牛的距离总和相加,就是答案

    代码写的有点乱

    View Code
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<string>
     6 #include<vector>
     7 //#include<map>
     8 #include<queue>
     9 #include<stack>
    10 #include<cmath>
    11 #include<set>
    12 #define N 10001
    13 #define inf 100000000
    14 #define _clr(a,val) (a,val,sizeof(a))
    15 #define Min(x, y)   x < y ? x : y
    16 #define Max(x, y)   x < y ? y : x
    17 
    18 using namespace std;
    19 
    20 typedef long long ll;
    21 
    22 struct node
    23 {
    24     ll id,x;
    25 }a[N];
    26 bool cmp(node a,node b)
    27 {
    28     return a.id < b.id;
    29 }
    30 ll sum [N];
    31 ll sumx[N];
    32 int main()
    33 {
    34     ll n,i,j;
    35     while(cin>>n)
    36     {
    37         for(i = 1; i <= n; i++)
    38         {
    39             cin>>a[i].id;
    40         }
    41         sort(a + 1,a + n + 1,cmp);
    42         _clr(sum,0);
    43         _clr(sumx,0);
    44         for(i = 1; i <= n; i++)
    45         sum[i] = sum[i - 1] + a[i].id;
    46         for(i = 1; i <= n; i++)
    47         {
    48             sumx[i] = (((i - 1) * a[i].id - sum[i - 1]) + ((sum[n] - sum[i]) - (n - i) * a[i].id));
    49         }
    50         ll tsum = 0;
    51         for(i = 1; i <= n; i++)
    52         tsum += sumx[i];
    53         cout<<tsum<<endl;
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    基于http实现网络yum源搭建
    基于长轮询简易版聊天室
    放大镜案例
    弹出登录框
    拖拽案例
    js入门之DOM动态创建数据
    heoi2020游记
    省选模拟6&7
    省选模拟5
    后缀自动机总结
  • 原文地址:https://www.cnblogs.com/fxh19911107/p/2645188.html
Copyright © 2011-2022 走看看