hdu4911 简单树状数组
题意:
给你一串数字,然后给你最多进行k次交换(只能交换相邻的)问交换后的最小逆序数是多少。
思路:
首先要知道的一个就是给你一个序列,每次只能交换相邻的位置,把他交换成一个递增序列所需要的最少步数等于整个序列的逆序数,在转化到这个题目,我们只要求出个逆序数,然后输出逆序数 - k就行了,如果是负数输出0。
#include<stdio.h> #include<string.h> #include<algorithm>#define N 100000 + 10 using namespace std;typedef struct {int num ,id; }NODE;NODE node[N];__int64 num[N]; int hash[N]; int lowbit(int x) {return x & -x; }void update(int x ,__int64 a ,int n) {for(int i = x ;i <= n ;i += lowbit(i))num[i] += a; }__int64 find(int x) {__int64 sum = 0;for(int i = x ;i > 0 ;i -= lowbit(i))sum += num[i];return sum; }bool camp(NODE a ,NODE b) {return a.num < b.num; }int main () {int n ,i ,a;__int64 m ,sum;while(~scanf("%d %I64d" ,&n ,&m)){for(i = 1 ;i <= n ;i ++){scanf("%d" ,&node[i].num);node[i].id = i;}sort(node + 1 ,node + n + 1 ,camp);int t = 0;node[0].num = -1;for(i = 1 ;i <= n; i ++){if(node[i].num != node[i-1].num)t ++; hash[node[i].id] = t;}memset(num ,0 ,sizeof(num));for(sum = 0 ,i = 1 ;i <= n ;i ++){sum += (i - 1) - find(hash[i]);update(hash[i] ,1 ,t);}if(sum < m) printf("0\n");else printf("%I64d\n" ,sum - m);}return 0; }
hdu4911 简单树状数组相关推荐
- poj 2029 二维树状数组
思路:简单树状数组 #include<map> #include<set> #include<cmath> #include<queue> #inclu ...
- 差分+树状数组 线段树【P2357】 守墓人
题目描述-->p2357 守墓人 敲了一遍线段树,水过. 树状数组分析 主要思路: 差分 简单介绍一下差分(详细概念太麻烦,看下面. 给定一个数组 7 8 6 5 1 8 18 20 35 // ...
- CF56E Domino Principle 树状数组 + 简单dp
一个比较简单的题,但是我还是没做出来(哭. 很容易想到从后往前做,所以我们可以维护一个dp数组f,f(i)表示到第i个牌倒下能达到的最远距离. f直接倒着跑,每次取[x,x+h−1][x,x+h-1] ...
- 树状数组维护区间和的模型及其拓广的简单总结
by wyl8899 树状数组的基本知识已经被讲到烂了,我就不多说了,下面直接给出基本操作的代码. 假定原数组为a[1..n],树状数组b[1..n],考虑灵活性的需要,代码使用int *a传数组. ...
- bzoj2683:简单题(树状数组套CDQ分分治)
CDQ(陈丹琦)分治 CDQ显然是一个人的名字(2008NOI金牌选手陈丹琦) 这种离线的分治算法在算法界被称为"CDQ分治". 首先回忆一下归并排序的分治, 它的操作是将数组二 ...
- 简单の暑假总结——树状数组
2.1 树状数组 树状数组,顾名思义,长得像树的数组,用于处理一些单点修改以及区间查询的问题.其时间复杂度为 O(log2n)O(\log _2n)O(log2n) .如过我们使用一些一般的数据结 ...
- 7.25 树状数组的简单应用题
首先我们都了解过树状数组这一短小精悍的利器,知道它和差分以及推公式的简单结合.但很显然问题不会那么裸. 下面我们将讨论两道关于树状数组的简单应用题,看看具体包装下的树状数组题目 一. 楼兰图腾 ...
- 洛谷 P5057 [CQOI2006]简单题(树状数组)
嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...
- HDU 2836 Traversal 简单DP + 树状数组
题意:给你一个序列,问相邻两数高度差绝对值小于等于H的子序列有多少个. dp[i]表示以i为结尾的子序列有多少,易知状态转移方程为:dp[i] = sum( dp[j] ) + 1;( abs( he ...
最新文章
- plsql 设置鼠标行执行_Excel中执行“宏”的方法有哪些?我列举了这5个,你会几个...
- 采用SIMULINK SimPowerSystems的光伏并网阵列仿真
- .net core 文件流保存图片_Java--利用TCP实现文件上传
- C++学习之路 | PTA乙级—— 1091 N-自守数 (15 分)(精简)
- Spring自学日志03(作用域,自动装配)
- 2019杭电多校第九场 Rikka with Cake (hdu6681)
- python 抽象类、抽象方法、接口、依赖注入、SOLIP
- 计算机图形学基础第七章ppt,第三章 计算机图形学基础ppt课件.ppt
- “ISO9001:2015质量管理体系 要求”学习笔记
- 04-1下载Win系统(装机助理)
- Could not find a version that satisfies the requirement pytz (from django)
- 进销存管理系统搭建流程
- 如何将PDF转换成jpg图片?教你2种免费方法
- java 拉勾网,拉钩网java笔试题分享
- 木门锁孔合页综合加工机器
- win10出现“以太网没有有效的ip配置”的问题
- 光学:薄透镜成像、景深
- JS undefined报错
- 雨听 | 英语学习笔记(十七)~作文范文:大学生的书单
- #1163 : 博弈游戏·Nim游戏(数学博弈)
热门文章
- linux--cut命令
- iOS 开发笔记 cocoapods 配置遇到的问题
- OPatch cannot find a valid oraInst.loc file to locate Central Inventory
- myeclipse2014新感悟
- 石川es6课程---8、字符串
- springboot配置cxf
- 记录MNIST采用卷积方式实现与理解
- 2018.12.22 spoj7258 Lexicographical Substring Search(后缀自动机)
- python编码与存储读取数据(数组字典)
- themeleaf跳转锚链接