HDU 5273 Dylans loves sequence【 树状数组 】
2015-06-28 16:32
489 查看
题意:给出n个数,再给出q个询问,求L到R的逆序对的个数
先自己写的时候,是每次询问都重新插入来求sum(r)-sum(l)
果断T
后来还是看了别人的代码----
预处理一下,把所有可能的区间的询问都求出来(1000*1000), 然后询问就是O(1)了
然后想自己这样写超时,是因为询问太多了----
View Code
先自己写的时候,是每次询问都重新插入来求sum(r)-sum(l)
果断T
后来还是看了别人的代码----
预处理一下,把所有可能的区间的询问都求出来(1000*1000), 然后询问就是O(1)了
然后想自己这样写超时,是因为询问太多了----
#include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack> #include<vector> #include<map> #include<set> #include<queue> #include<algorithm> using namespace std; typedef long long LL; const int INF = (1<<30)-1; const int mod=1000000007; const int maxn=1005; int a[maxn]; int c[maxn];//树状数组 int n,m; int ans[maxn][maxn]; struct node{ int x,id; }p[maxn]; int cmp(node n1,node n2){ return n1.x < n2.x; } int lowbit(int x){ return x &(-x);} int sum(int x){ int ret=0; while(x>0){ ret += c[x];x-=lowbit(x); } return ret; } void add(int x,int d){ while(x<=n){ c[x]+=d;x+=lowbit(x); } } int main(){ while(scanf("%d %d",&n,&m) != EOF){ memset(c,0,sizeof(c)); memset(a,0,sizeof(a)); memset(ans,0,sizeof(ans)); for(int i=1;i<=n;i++) { scanf("%d",&p[i].x); p[i].id=i; } sort(p+1,p+n+1,cmp); for(int i=1,j=0;i<=n;i++){ if(i==1||p[i].x != p[i-1].x) j++; a[p[i].id]=j; } // for(int i=1;i<=n;i++) // printf("a[%d]=%d\n",i,a[i]); for(int i=1;i<=n;i++){ memset(c,0,sizeof(c)); int res=0; for(int j=i;j<=n;j++){ res+=(j-i)-sum(a[j]); add(a[j],1); ans[i][j] = res; } } while(m--){ int l,r; scanf("%d %d",&l,&r); printf("%d\n",ans[l][r]); } } return 0; }
View Code
相关文章推荐
- 杭电ACM1297——Children’s Queue~~大数相加的应用
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools
- 杭电1005 Number Sequence
- iOS UITabBarItem 选中图的颜色,设置UIimage的渲染模式
- Android Volley完全解析(三),定制自己的Request
- UIImageView传值与生命周期的关系
- 用arduino做一个简单的计算器
- 解决SDCycleScrollView组建遇到UINavigationController时图片位置不准确
- hdu 1242 Rescue
- ArrayBlockingQueue源码剖析
- VirtualBox下快速创建新的虚拟机(一)——复制vdi文件
- Word Frequency
- APUE 头文件apue.h 解决方法
- Java常见的queue(队列)类测试
- 【Arduino学习笔记】蓝牙控制手自两用避障车
- 在jfinal中使用druid,并配置查看权限
- LeetCode_60---Permutation Sequence
- 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化
- [安卓]手机管家(二十一)杀毒UI及SlidingDrawer(抽屉效果)
- UIAlertView自动弹框创建步骤