hdu(4911)树状数组求逆序队
来源:互联网 发布:金粉世家知乎 编辑:程序博客网 时间:2024/06/06 08:23
就是每一次都把这个数所在的节点赋予1,那么如果此时他前面存在了1,那么说明前面的比他先出现,然而他又比前面的大,那么就说明了这是正序对,然后就把他加上前面的1数就好了,再用当前的数减去前面的正序対的个数就是逆序对
这道题必须要用
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define maxx 500050int bit[maxx],a[maxx];int n;struct node {int x,y;}pos[maxx];bool cmp(node aa,node bb){ return aa.x<bb.x;}int sum(int i){ int s=0; while(i>0){ s+=bit[i]; i=i&(i-1); } return s;}void add(int i,int xx){ while(i<=n) { bit[i]+=xx; i+=i&-i; }}int k;void slove(){ long long int ans=0; for(int j=0;j<n;j++){ ans+=j-sum(a[j]); add(a[j],1); } if(ans<k) ans=k; printf("%I64d\n",ans-k);}int main() { while(scanf("%d%d",&n,&k)==2){ memset(bit,0,sizeof(bit)); for(int i=0;i<n;i++){ scanf("%d",&pos[i].x); pos[i].y=i; } stable_sort(pos,pos+n,cmp); for(int i=0;i<n;i++) a[pos[i].y]=i+1; slove(); }}
0 0
- hdu(4911)树状数组求逆序队
- hdu 4911 求逆序对数+树状数组
- HDU 2689.求逆序(树状数组)
- HDU 4911 Inversion 树状数组求逆序数对
- hdu 4911 Inversion 树状数组求逆序数对
- Inversion (hdu 4911 树状数组 || 归并排序 求逆序对)
- HDU 2838 (树状数组求逆序数)
- hdu 2838(树状数组求逆序数)
- hdu 3743(树状数组求逆序数)
- hdu 1394 树状数组求逆序数
- hdu 1394(树状数组求逆序数)
- hdu 2689树状数组求逆序数
- HDU 4911 Inversion(树状数组求逆序对数 + 数据离散化)
- 【树状数组】hdu 4911 Inversion(离散化+树状数组求逆序数)
- 树状数组求逆序数(模板)
- 求逆序对 (树状数组版)
- poj3067(树状数组求逆序数)
- HDU2838(树状数组求逆序数)
- sql group by
- iOS 动态类型和动态绑定
- The Java Sandbox
- 最给力的营销技巧 让消费者自己改变主意
- Linux 位图记录
- hdu(4911)树状数组求逆序队
- UVA - 11008 Antimatter Ray Clearcutting 状态压缩
- VB的Autoredraw、refresh等等功能分析汇总及“内存作图”
- Servlet的生命周期
- Question and answer
- 巧用java自定义注解和反射
- git 删除远程分支
- JavaScript总结-网页上显示时间
- UVA624:CD