HDU 2838 Cow Sorting [树状数组]【数据结构】_milking cow数据结构-程序员宅基地

技术标签: hdu  数据结构  ==== 数据结构 ====  

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838
—————————————————-.
Cow Sorting

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3275 Accepted Submission(s): 1102

Problem Description
Sherlock’s N (1 ≤ N ≤ 100,000) cows are lined up to be milked in the evening. Each cow has a unique “grumpiness” level in the range 1…100,000. Since grumpy cows are more likely to damage Sherlock’s milking equipment, Sherlock would like to reorder the cows in line so they are lined up in increasing order of grumpiness. During this process, the places of any two cows (necessarily adjacent) can be interchanged. Since grumpy cows are harder to move, it takes Sherlock a total of X + Y units of time to exchange two cows whose grumpiness levels are X and Y.

Please help Sherlock calculate the minimal time required to reorder the cows.

Input
Line 1: A single integer: N
Lines 2..N + 1: Each line contains a single integer: line i + 1 describes the grumpiness of cow i.

Output
Line 1: A single line with the minimal time required to reorder the cows in increasing order of grumpiness.

Sample Input
3
2
3
1

Sample Output
7

Hint

Input Details

Three cows are standing in line with respective grumpiness levels 2, 3, and 1.
Output Details

2 3 1 : Initial order.
2 1 3 : After interchanging cows with grumpiness 3 and 1 (time=1+3=4).
1 2 3 : After interchanging cows with grumpiness 1 and 2 (time=2+1=3).

Source
2009 Multi-University Training Contest 3 - Host by WHU

—————————————————-.

题目大意:
主要看hint就能知道了
其实还是一个冒泡排序 只不过求得是总花费 每次花费为交换的两个值得和

解题思路:
首先用树状数组对每个数求一下他出现之前逆序对数
对于每个数来说 它对结果的贡献就是
他之前的逆序对数*a_i+与他逆序的数的总和

这里直接采取了维护两个树状数组的暴力思路:
一个维护逆序对个数
一个维护逆序数的和

注意要用I64 否则溢出了…

附本题代码
————————————————————————.

#include <bits/stdc++.h>

#define abs(x)          (((x)>0)?(x):-(x))
#define lalal           puts("*********")
#define Rep(a,b,c)      for(int a=(b);a<=(c);a++)
#define Req(a,b,c)      for(int a=(b);a>=(c);a--)
#define Rop(a,b,c)      for(int a=(b);a<(c);a++)
#define s1(a)           scanf("%d",&a)
typedef long long int LL;
using namespace std;
/**************************************/

const int N = 100000+5;
#define lowbit(x)    (x&-x)
LL sum1[N],sum2[N];
int cnt;
void update1(int index,int val){
    for(int i=index;i<=cnt;i+=lowbit(i))
        sum1[i]+=val;
    return ;
}
LL getSum1(int index){
    LL ans=0;
    for(int i=index;i>0;i-=lowbit(i))
        ans+=sum1[i];
    return ans;
}
void update2(int index,int val){
    for(int i=index;i<=cnt;i+=lowbit(i))
        sum2[i]+=val;
    return ;
}
LL getSum2(int index){
    LL ans=0;
    for(int i=index;i>0;i-=lowbit(i))
        ans+=sum2[i];
    return ans;
}

int main(){
    while(~s1(cnt)){
        int x;
        LL ans=0;
        memset(sum1,0,sizeof(sum1));
        memset(sum2,0,sizeof(sum2));
        Rep(i,1,cnt){
            s1(x);
            ans+=x*(getSum2(cnt)-getSum2(x))+(getSum1(cnt)-getSum1(x));
            update1(x,x);
            update2(x,1);
        }
        printf("%I64d\n",ans);
    }
    return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33184171/article/details/53088871

智能推荐

Python 如何写好注释与文档字符串o(* ̄▽ ̄*)ブ_pycharm缺少文档字符串-程序员宅基地

文章浏览阅读2.1k次,点赞6次,收藏8次。注释是每个计算机语言的重要组成部分,用于在源代码中解释代码的功用,可以增强程序的可读性,可维护性,或者用于在源代码中处理不需运行的代码段,来调试程序的功能执行。**想必很多人都了解 Python 的注释,Python 的注释分单行注释和多行注释,对于多行注释而言会用到一个Python独一无二很厉害的文档字符串,这也是下面内容要提到的,在当前部分将会稍微讲讲单行注释。****文档字符串(DocString)注重于解释怎么使用模组、类、方法与函数,对于每个模组、类、方法与函数都应该编写 DocString 文_pycharm缺少文档字符串

基于微信小程序的校园二手交易平台-程序员宅基地

文章浏览阅读1.9k次,点赞32次,收藏20次。本基于微信小程序的校园二手平台采用java语言和mysql数据库进行设计,采用微信端+客户端的模式进行设计。用户也可以发布自己的闲置商品;同时本系统中加入了管理员,管理员可以审核商品,审核注册用户,实现销售与管理的一体化。为了更加方便用户的交易,用户可以在发布商品时填写自己的联系信息,同时本系统中设计了在线搜索的模块功能,可以使系统更加的灵活。本系统的实现可以帮助用户实现闲置物品的交易,非常符合大学生的生活需求。商品信息;评价信息;商品配送。_基于微信小程序的校园二手交易平台

解决matlab中文乱码问题_java调用matlab乱码-程序员宅基地

文章浏览阅读1.3w次。说实话,这两篇文章也没能解决我现在的问题,现在的问题是本机的editor输入中文可以,而且打开也不是乱码;但是文件拷贝到别的机器上就中文成了乱码了,纠结,我总不能把别人的设置改了吧。原文链接如下:linux下matlab中文乱码解决matlab中文乱码当然我还在震动论坛看到一种方法就是说把preference里面的字体改成monospaced,实际上我这几个editor的设置都_java调用matlab乱码

四川成都二手房数据集可视化大屏全屏系统毕业设计应用-程序员宅基地

文章浏览阅读2.8k次,点赞17次,收藏18次。四川成都二手房数据集可视化大屏全屏系统毕业设计应用,大学生本科专科专升本成人教育毕业设计毕设开题报告模板,研究背景与意义、国内外研究现状、、研究思路与方法、研究内客和创新点、后台功能需求分析和前端功能需求分析、研究思路与研究方法、可行性、研究进度安排、论文(设计)写作提纲、主要参考文献,大学生本科专科专升本成人教育毕业设计毕设开题报告模板,研究背景与意义、国内外研究现状、、研究思路与方法、研究内客和创新点、后台功能需求分析和前端功能需求分析、研究思路与研究方法、可行性、研究进度安排、论文(设计)写作提纲

java/php/node.js/python英语学院学生选课微信小程序【2024年毕设】-程序员宅基地

文章浏览阅读892次,点赞22次,收藏18次。后台主要是管理员和教师,管理员功能包括首页、个人中心、学生管理、教师管理、课程类型管理、课程信息管理、选课信息管理、取消选课管理、管理员管理、系统管理等;教师功能包括首页、个人中心、课程信息管理、选课信息管理、取消选课管理等;springboot基于springboot架构的博客平台设计。springboot基于网络评论的旅馆预定网站的设计与实现。springboot基于微信小程序的校园跑腿平台。

CSP-J 2022复赛T2 解密--分析_[csp-j 2023] 一元二次方程-程序员宅基地

文章浏览阅读3k次,点赞6次,收藏6次。csp-j2022复赛 T2-解密详解_[csp-j 2023] 一元二次方程

随便推点

java读取txt文本,字符串截取-程序员宅基地

文章浏览阅读2k次。package com.test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;..._java读取text 文本 中文字符长度截取问题

如何在linux上下载各种常用安卓应用_麟卓卓懿下载-程序员宅基地

文章浏览阅读6.1k次。随着互联网的发展,在很多场合中或者工作中都会用到linux系统,但常用linux的小伙伴们都知道,linux对各个常用的安卓应用兼容性很差,基本上好多应用只有简易的网页版,例如微信、QQ、钉钉等,网页版的很多功能都没办法使用,这给我们的工作带来了很多不便。这里呢我就给大家推荐一个完美兼容linux系统环境的平台–麟卓卓懿应用商城。麟卓卓懿应用商城支持海量安卓应用无缝透明运行在Linux平台上,实现移动应用生态和桌面应用生态的完美结合。麟卓卓懿应用商城的应用中心中可以下载海量的安卓应用,并且应用种类多、平_麟卓卓懿下载

微信小程序node+vue+uniapp课程在线答疑学习答题考试系统_uni-app 考试系统-程序员宅基地

文章浏览阅读818次。系统主要分为管理员和学生、教师三部分,管理员服务端:首页、个人中心、学生管理、教师管理、课程资源管理、课程类型管理、学习记录管理、系统管理,教师服务端:首页、个人中心、课程资源管理、学习记录管理、试题管理、试卷管理、考试管理,学生客户端;首页、首页、课程资源、我的等功能,基本上实现了整个答题系统小程序信息管理的过程。本系统在一般答题系统小程序的基础上增加了最新信息的功能方便用户快速浏览,是一个高效的、动态的、相互友好的答题系统小程序。(2)减少维护人员的工作量以及实现用户对信息的控制和管理。_uni-app 考试系统

让wordpress博客首页、分类页 显示文章标题列表或摘要-程序员宅基地

文章浏览阅读445次。 最近买了个godaddy的150G的空间,准备用dede和wordpress做些小站,wordpress架起来以后,发布的文章都是全部展示在首页的,如果文章比较长的话,这样会使网站首页内容很长,所以一般情况我们都希望在首页上只显示文章标题和文章摘要。那么我们如何来实现这功能呢,查阅了一下后发现,其实这个很简单,具体做法如下: 首先找到wp-content/themes下你使用的模板目录,查...

Java基础_14字符串的方法和权限修饰符__泛型【重点】-程序员宅基地

文章浏览阅读785次,点赞26次,收藏15次。public 返回值类型 方法名字 (参数) {带有泛型的方案的语法格式public 返回值的类型 方法名字 (参数) {}无意义的占位符:可以是26个英文单词大写, 还可以是?开始中经常使用 T(Type) E(Element) K (key) V(value)?无参无返回值有参无返回值无参有返回值有参有返回值test(23);//T Intgertest("狗蛋");//T Stringtest('嘻');//泛型 代表各种类型的 广泛的类型。

时尚机密防线升级:迅软DSE助力时装企业应对终端泄密挑战-程序员宅基地

文章浏览阅读1.1k次,点赞32次,收藏25次。2.针对员工电脑文档操作行为及流转情况进行审计,包括文档创建、修改、复制、移动、重命名、删除、上传、下载等行为进行记录,并生成统计报表,及时发现员工违规操作行为。1.公司设计新款女装和时尚服饰,设计人员产生的图纸文档明文存放在电脑上,部分设计人员使用Mac电脑,图纸文档可以随意外传出去,存在泄密风险。1.针对员工电脑文档加密、申请解密、直接解密、审批解密、文档外发、全盘扫描加解密等行为进行记录,统计员工文档加解密操作行为。1.员工电脑禁止使用U盘随意拷贝文档,统一使用公司注册验证的U盘接入拷贝数据。

推荐文章

热门文章

相关标签