hdu 2838 Cow Sorting
题意:
给出一个数组,要求把他们排成升序,两个数字交换的代价是x + y,求代价的总和。
思路:
简单的逆序对变形,树状数组维护小于的cnt和sum即可。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 1e5 + ;
const int M = ;
int a[N];
int c[N];
ll sum[N];
int lowbit(int x)
{
return x&(-x);
}
void addcnt(int x)
{
for (int i = x;i <= M;i += lowbit(i)) c[i]++;
}
int getcnt(int x)
{
int ans = ;
for (int i = x;i > ;i -= lowbit(i)) ans += c[i];
return ans;
}
void addsum(int x,int y)
{
for (int i = x;i <= M;i += lowbit(i)) sum[i] += y;
}
ll getsum(int x)
{
ll ans = ;
for (int i = x;i > ;i -= lowbit(i)) ans += sum[i];
return ans;
}
int main()
{
int n;
while (scanf("%d",&n) != EOF)
{
memset(c,,sizeof(c));
memset(sum,,sizeof(sum));
for (int i = ;i < n;i++)
{
scanf("%d",&a[i]);
}
ll tmp = ;
ll ans = ;
for (int i = ;i < n;i++)
{
int cnt = getcnt(a[i]);
cnt = i - cnt;
ll s = getsum(a[i]);
s = tmp - s;
ans += s + 1LL * cnt * a[i];
addcnt(a[i]);
addsum(a[i],a[i]);
tmp += a[i];
}
printf("%lld\n",ans);
}
return ;
}
hdu 2838 Cow Sorting的更多相关文章
- hdu 2838 Cow Sorting(树状数组)
Cow Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- hdu 2838 Cow Sorting (树状数组)
Cow Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 2838 Cow Sorting 树状数组求所有比x小的数的个数
Cow Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 2838 Cow Sorting (树状数组+逆序对)
题目 题意:给你N个排列不规则的数,任务是把它从小到大排好,每次只能交换相邻两个数,交换一次的代价为两数之和,求最小代价 拿到这道题,我根本看不出这道题和树状数组有半毛钱关系,博客之,全说用树状数组做 ...
- HDU Cow Sorting (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1 ...
- Cow Sorting hdu 2838
Cow Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- BZOJ1697: [Usaco2007 Feb]Cow Sorting牛排序
1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 387 Solved: 215[S ...
- Cow Sorting(置换群)
Cow Sorting Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6664 Accepted: 2602 Descr ...
- BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心
BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行 ...
随机推荐
- python底层原理
有同学问到了一个问题,python中存储变量是通过内存地址来存储,那么python又是如何去判断内存中的地址是什么数据类型的呢.经过查找,找到这篇文章: 原博客地址:http://www.cnblog ...
- CSS3_综合案例
综合案例 设置元素的 width,还可以利用 left 和 right 为了防止图片太小,background-size: 100% 100%; <!DOCTYPE html> <h ...
- 一个bat病毒分析(part1)
之前没学过bat,这里借分析顺便学一波,分析过程可能有点啰嗦 这里的@echo off关闭回显,病毒一般都是隐秘的执行的,然后setlocal enabledelayedexpansion是设置本地变 ...
- FloatingActionButton的使用
- js上课笔记
Html 结构化CSS 样式JavaScript 行为交互01.JavaScript基础02.JavaScript操作BOM对象03.JavaScript操作DOM对象 *****04.JavaScr ...
- VIm快捷操作
vim快捷操作 移动 行级移动 $ 行尾 0 行头 段级移动 { 段首 } 段尾 屏幕级别 L: 屏幕尾部 H: 屏幕头部 文档级别 G: 文档尾部 1G:头部 nG:文档n行 删除 dd: 删除当前 ...
- Django创建项目基本步骤
1.新建项目 django-admin startproject cmdb(项目名) 2.启动服务python manage.py runserver 0.0.0.0:8000(表示服务监听在8000 ...
- Spring Boot web简介及原理 day04
一.SpringBoot创建web开发(三部曲) 1.快速构建SpringBoot项目,并以jar包的形式构建 2.选择对应的功能模块 (选定场景,配置少量的配置就可运行,不配置有默认值) 3.编写自 ...
- Linq中join多字段匹配
错误示范: var projectSubmitInfos = (from project in db.T_PM_Project join member in db.T_PM_Member on pro ...
- Django---cookie和session
Django的cookie和session 一.cookie 二.session 回到顶部 一.cookie 1.特点 1. cookie数据保存在客户端,以key-value存储 2. cookie ...