博客
关于我
2018HDU多校2-1010-Swaps and Inversions(hdu 6318)-逆序数,树状数组
阅读量:281 次
发布时间:2019-03-01

本文共 295 字,大约阅读时间需要 1 分钟。

数列处理问题:最小花费计算方法

在处理数列时,可以选择两种方式:每次交换相邻元素花费y元,或者处理每个逆序数花费x元。目标是找到最小的总花费。

关键思路是分析交换次数对逆序数的影响。交换一次相邻元素最多只能减少一个逆序数,因此可能存在两种情况:全部交换或不交换。这种情况下,只需计算逆序数总数即可决定选择哪种方式。

使用树状数组高效计算逆序数。将数列从大到小排序,记录每个数出现的位置。每次选最大数,若前面有其他数,则有逆序数。累加这些逆序数得到总数。

代码实现了这一思路,计算逆序数后,比较两种花费方式,取较小值输出。

改进空间包括更复杂的交换策略,但目前的方法在时间复杂度上已足够高效。

转载地址:http://daco.baihongyu.com/

你可能感兴趣的文章
Oracle中的rownum 和rowid的用法和区别
查看>>
oracle中的大小写、字符、dual、数字、处理、日期、函数、显/隐式、时间、条件表达式case、decode、to_date、to_char、sysdate
查看>>
oracle中表和视图的区别,oracle中常用表和视图
查看>>
oracle之表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)
查看>>
Oracle从11g导出后导入10g
查看>>
oracle从备份归档日志的方法集中回收
查看>>
oracle优化器analyzed,Oracle 学习之 性能优化(十三) 索引
查看>>
Oracle修改字段类型
查看>>
Oracle修改表或者字段的注释
查看>>
oracle典型安装失败,安装oracle 10失败
查看>>
Oracle内存结构详解(四)--Oracle SGA其他组成部分
查看>>
Oracle函数与存储过程和程序包
查看>>
Oracle分析函数之LEAD和LAG
查看>>
Oracle分组取前n条记录
查看>>
Oracle分页sql
查看>>
Oracle创建database link(dblink)和同义词(synonym)
查看>>
oracle创建数据库的步骤
查看>>
Oracle创建用户、角色、授权、建表
查看>>
Oracle创建用户与授予表空间与权限
查看>>
oracle创建表(并且实现ID自增)
查看>>