hdu_2838 Cow Sorting(数状数组 逆序数)
来源:互联网 发布:php 剔除数组元素 编辑:程序博客网 时间:2024/05/06 04:45
http://acm.hdu.edu.cn/showproblem.php?pid=2838
题意:
给n个数字,每次只能相邻两个数交换,代价为两个数之和,求使整个数列变为升序的最小代价。
思路:
对于一个数x,设左边有n个数比它大,则这n个数必须移动x右边去,则需要的代价为这n个数的和+x*n,相当于求逆序数。
我的代码:
/*program:hdu_2838author:BlackAndWhite*/ #include<stdio.h>#define lowbit(i) (i)&(-i)__int64 n,a[100005],ans;__int64 c[100005],d[100005],i;//c保存比x小的数的和,d保存比x小的数的个数 void Add(__int64 i,__int64 val,__int64 c[]){ for(;i<=100001;i+=lowbit(i)) c[i]+=val;}__int64 Sum(__int64 i,__int64 c[]){ __int64 ret=0; for(;i>0;i-=lowbit(i)) ret+=c[i]; return ret;}int main(){ scanf("%I64d",&n); for(i=0;i<n;i++) scanf("%I64d",&a[i]); for(i=0;i<n;i++) { Add(a[i],a[i],c); Add(a[i],1,d); ans+=Sum(n,c)-Sum(a[i],c)+(Sum(n,d)-Sum(a[i],d))*a[i]; } printf("%I64d\n",ans); return 0;}/*趁热打铁,再来个树状数组的,呵呵*/
- hdu_2838 Cow Sorting(数状数组 逆序数)
- HDU2838 Cow Sorting【树状数组】【逆序数】
- hud 2838 Cow Sorting 树状数组求逆序数
- HDU 2838 Cow Sorting(树状数组求逆序数)
- HDU 2838 Cow Sorting(树状数组求逆序数)
- hdu2838Cow Sorting(树状数组+逆序数)
- HDU2838 Cow Sorting (逆序数+求和)
- HDU2838 Cow Sorting 树状数组 区间求和加逆序数的应用
- Rotate(数状数组+逆序数)
- poj1007 DNA Sorting(求逆序数)
- 1007 DNA Sorting(字符串+逆序数)
- HDOJ 题目2838 Cow Sorting(树状数组逆序对)
- HDU5122 K.Bro Sorting 树状数组类逆序数应用
- 逆序数(树状数组)
- Problem 62: DNA Sorting(简单逆序数, 排序问题)
- poj 1007 DNA Sorting (求逆序数)
- HDU-5122 K.Bro Sorting (逆序数)
- POJ-1007-DNA Sorting-求逆序数
- Java 查询.csv文件错误提示:Invalid column name提示问题
- linux环境下移植qt4及qwt从零开始
- 微软笔试题 给一个包含10^7个整数的大文件排序
- c++输入输出 流的应用
- c语言对齐2
- hdu_2838 Cow Sorting(数状数组 逆序数)
- 我一直在努力
- What is POID
- POJ 2478 Farey Sequence
- hostapd在ArchLinux上搭建无线wifi信号的配置【备忘】
- 关于点击popupwindow以外区域 popupwindow自动消失问题
- 杂。
- 《编程之美》读书笔记(一):中国象棋将帅问题
- 关于毕业到现在这段时间的生活和工作随想