HDU 2838 Cow Sorting(树状数组)
来源:互联网 发布:网络电视会员怎么开通 编辑:程序博客网 时间:2024/05/17 05:03
题意:首先每次只能交换相邻的两头牛,并且最后要求升序排列,所以最后整个序列的逆序是0,每次交换只可以消除1个逆序。(令a[i]的逆序是从1到i-1比它大的数的个数。)
思路:对于某个数,要把它变成有序的,那么很容易可以推算出公式就是它自身的逆序数乘自身的值再加上它的逆序数的和,自己算算看看。
吐槽:一开始没想清楚树状数组下标的问题,后来没注意会爆int搞了好久...
#include <cstdio>#include <queue>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>#include <ctime>#include <cmath>#include <cctype>using namespace std;#define maxn 100000+100#define LL long longint cas=1,T;int a[maxn];LL L[maxn];LL c[maxn];int lowbit(int x){return x&(-x);}LL sum(int i){LL ans = 0;while (i){ans +=c[i];i-=lowbit(i);}return ans;}void add(int i,int d){while (i<maxn){c[i]+=d;i+=lowbit(i);}}int main(){int n;while (scanf("%d",&n)!=EOF && n){memset(L,0,sizeof(L));memset(c,0,sizeof(c));for (int i = 1;i<=n;i++) {scanf("%d",&a[i]);L[i]=sum(maxn)-sum(a[i]);add(a[i],1);//printf("%d ",L[i]);}memset(c,0,sizeof(c));LL ans = 0;for (int i = 1;i<=n;i++){LL temp = a[i]*L[i]; ans+= temp+sum(a[i]);add(a[i],a[i]);}printf("%lld\n",ans);}//freopen("in","r",stdin);//scanf("%d",&T);//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);return 0;}
0 0
- HDU 2838 cow sorting 树状数组
- hdu 2838 Cow Sorting(树状数组)
- hdu 2838 Cow Sorting(树状数组)
- hdu 2838 Cow Sorting (树状数组)
- HDU 2838 Cow Sorting(树状数组)
- hdu-2838(Cow Sorting)----》树状数组
- HDU - 2838 Cow Sorting (树状数组)
- hdu 2838 Cow Sorting(树状数组)
- hdu 2838 cow sorting(树状数组)
- hdu 2838 Cow Sorting 树状数组
- HDU 2838 Cow Sorting(树状数组)
- HDU-2838 Cow Sorting(树状数组)
- HDU 2838 Cow Sorting 树状数组
- HDU 2838 Cow Sorting [树状数组]【数据结构】
- Hdu 2838 Cow Sorting 树状数组
- hdu 2838 Cow Sorting(树状数组)
- HDU 2838 Cow Sorting(树状数组)
- HDU 2838 Cow Sorting(树状数组-水题)
- ASP.NET中IsPostBack详解
- xml简单工具类
- Benchmark库的建立01:数组越界bug
- thinkphp_3.1.2介绍和安装
- 程序员面试题精选100题(17)-把字符串转换成整数[算法]
- HDU 2838 Cow Sorting(树状数组)
- Linux kamailio Sip服务器的编译与安装(Ubuntu14.04)
- 基于在线多示例学习的稳定目标跟踪方法
- IP地址和子网掩码的作用是什么
- OpenJudge百炼习题解答(C++)--题3858:和数
- codeforces #336 D. Zuma (区间dp)
- 程序员面试题精选100题(18)-用两个栈实现队列[数据结构]
- Find The Multiple
- C/C++ 图像处理(9)------图像の桶形畸变矫正