poj 2299(离散化+树状数组求逆序数)
来源:互联网 发布:d3.js v3中文api 编辑:程序博客网 时间:2024/05/16 04:53
题意:求出序列的逆序数之和。
思路:今天做了一道树状数组处理的逆序数,给的数值太大,要离散化处理。结果会超int。
#include<stdio.h>#include<stdlib.h>#include<string.h>const int N=500010;int cnt[N],n;struct node{int w;int id;}p[N];int cmp(void const *a,void const *b){node *c,*d;c=(node *)a;d=(node *)b;return c->w-d->w;}int amp(void const *a,void const *b){node *c,*d;c=(node *)a;d=(node *)b;return c->id-d->id;}void plus(int i) { while(i<=n) { cnt[i]++; i+=(i&(-i));//值比i大的树状数组都要+1 } } int findsum(int i) { int sum=0; while(i>0) { sum+=cnt[i]; i-=(i&(-i)); } return sum; } int main(){int i,k,temp;while(scanf("%d",&n),n){memset(cnt,0,sizeof(cnt));for(i=1;i<=n;i++){scanf("%d",&p[i].w);p[i].id=i;}k=0;temp=-1;qsort(p+1,n,sizeof(p[1]),cmp);for(i=1;i<=n;i++){if(p[i].w==temp)p[i].w=k;else{temp=p[i].w;p[i].w=++k;}}__int64 sum=0;qsort(p+1,n,sizeof(p[1]),amp);for(i=1;i<=n;i++){sum+=(i-1-findsum(p[i].w));plus(p[i].w);}printf("%I64d\n",sum);}return 0;}
- POJ 2299 离散化+树状数组求逆序数
- POJ 2299 树状数组求逆序数+离散化
- poj 2299 离散化+树状数组求逆序数
- poj 2299(离散化+树状数组求逆序数)
- poj 2299 树状数组求逆序数+离散化
- POJ 2299 <离散化+树状数组求逆序数对>
- 树状数组 求逆序数 poj 2299 离散化
- poj 2299 树状数组(离散化)求逆序数
- 离散化+树状数组求逆序数
- 树状数组离散化求逆序数
- 树状数组+ 离散化 求逆序数
- POJ 2299 Ultra-QuickSort (树状数组求逆序数+离散化)
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- 树状数组 离散化 求逆序数POJ 2299Ultra-QuickSort解题报告
- POJ 2299 Ultra-QuickSort(树状数组+离散化—求逆序数)
- poj 2299 Ultra-QuickSort 树状数组求逆序数 离散化
- maven国内镜像配置(Ubuntu)
- 函数返回的过程
- Hibernate根据查询内容封装成对象(DTO)
- Oracle MERGE语句
- ubuntu的ps -aux详细介绍
- poj 2299(离散化+树状数组求逆序数)
- 我在中国过万圣节!”——AYC使者化身“女巫”“土豪”庆祝西方传统节日
- iOS UITextFiled 控件 限制其输入长度(手机号限长)
- linux下设置ssh无密码登录
- Java Swing模拟水波纹扩散效果动画
- 嵌入式系统设计师笔记
- 云计算技术是实现绿色数据中心的必要条件
- POJ P2492 A Bug's Life
- Android学习篇章27-Broadcast广播基础