码迷,mamicode.com
首页 > 其他好文 > 详细

uva 1428

时间:2015-06-04 19:15:31      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4174

 

技术分享
 1  #include<iostream>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<vector>
 5 using namespace std;
 6 #define lowbit(x) ((x)&(-x))
 7 typedef long long LL;
 8 const int maxn = 100000 + 10;
 9 int a[maxn],s[maxn];
10 LL b[maxn];
11 int iNum;
12 
13 void add(int x,int v)
14 {
15     while (x<=iNum)
16     {
17         s[x]+=v;
18         x += lowbit(x);
19     }
20 
21 }
22 
23 int sum (int x)
24 {
25     int ret = 0;
26     while (x>0)
27     {
28         ret += s[x];
29         x -= lowbit(x);
30     }
31     return ret;
32 }
33 int main()
34 {
35 
36     int T;
37     cin >> T;
38     while (T--)
39     {
40         int n;
41         cin >> n;
42         memset(s, 0, sizeof(s));
43         for (int i = 1;i<=n;i++)
44         {
45 
46             cin >> a[i];
47 
48             iNum = max(iNum,a[i]);
49         }
50 
51 
52         for (int i = 1;i<=n;i++)
53         {
54 
55             b[i] = sum(a[i]-1);
56             add(a[i],1);
57         }
58         LL ans = 0;
59         memset(s,0,sizeof(s));
60         for (int i = n;i>0;i--)
61         {
62             LL d = sum(a[i]-1);
63             add(a[i],1);
64             ans += (b[i] * (n - i - d)) + d * (i - 1 - b[i]);
65 
66         }
67         cout << ans << endl;
68     }
69     return 0;
70 }
View Code

 

uva 1428

标签:

原文地址:http://www.cnblogs.com/yifi/p/4552372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!