题目链接:

hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5273

bc:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=604&pid=1002

Dylans loves sequence

 Accepts: 250
 Submissions: 806
 Time Limit: 2000/1000 MS (Java/Others)
 Memory Limit: 131072/131072 K (Java/Others)
问题描述
Dylans得到了NN个数a[1]...a[N]a[1]...a[N]。
有QQ个问题,每个问题形如(L,R)(L,R)
他需要求出L-RL−R这些数中的逆序对个数。
更加正式地,他需要求出二元组(x,y)(x,y)的个数,使得L \leq x,y \leq RL≤x,y≤R且x < yx<y且a[x] > a[y]a[x]>a[y]
输入描述
第一行有两个数NN和QQ。
第二行给出NN个数字a[1]...a[N]a[1]...a[N]。
接下来的QQ行,每行给出两个数L, RL,R。 N \leq 1000,Q \leq 100000,L \leq R,1 \leq a[i] \leq 2^{31}-1N≤1000,Q≤100000,L≤R,1≤a[i]≤2​31​​−1
输出描述
对于每个询问,输出逆序对个数。
输入样例
3 2
3 2 1
1 2
1 3
输出样例
1
3
Hint
hack数据里读入的每一行末尾不应该有多余的空格。

题解:

  如果已知[l,r]的逆序对要求[l,r+1]的逆序对,只需加上第r+1位对区间[l,r+1]贡献就可以了,而这个贡献值可以离线暴力求出来,那么久可以用o(n^2)暴力求出所有去加的逆序对数了。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; const int maxn=+; int n,q;
int a[maxn];
//cnt[i][j]表示区间[i,j]的逆序对数
int cnt[maxn][maxn];
//dp[i][j]表示第i位对区间[j,i](j<i)的逆序对贡献值
int dp[maxn][maxn]; void init(){
memset(cnt,,sizeof(cnt));
memset(dp,,sizeof(dp));
} int main(){
while(scanf("%d%d",&n,&q)==){
init();
for(int i=;i<=n;i++){
scanf("%d",a+i);
}
for(int i=;i<=n;i++){
for(int j=i-;j>=;j--){
if(a[j]>a[i]) dp[i][j]=dp[i][j+]+;
else dp[i][j]=dp[i][j+];
}
} for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++){
cnt[i][j]=cnt[i][j-]+dp[j][i];
}
} while(q--){
int l,r;
scanf("%d%d",&l,&r);
printf("%d\n",cnt[l][r]);
}
}
return ;
}

最新文章

  1. vim环境变量配置、背景色配置
  2. css3盒模型
  3. 代码与图详解性能之Python集合类型(list tuple dict set generator)
  4. JavaWeb学习笔记——Ajax
  5. MSSQL优化之——查看语句执行情况
  6. Cordova+angularjs+ionic+vs2015开发(五)
  7. android SurfaceView绘制 重新学习--基础绘制
  8. Java并发编程:CopyOnWrite容器的实现
  9. html标签总结。
  10. ACdream 1064 完美数
  11. I春秋——Misc(贝斯家族)
  12. Linux命令rz
  13. 9. Web browser-related (网页浏览器相关 4个)
  14. SQL Server - 索引详细教程 (聚集索引,非聚集索引)
  15. jexus linux x64 [专业版] 安装和配置https
  16. Cracking The Coding Interview 1.8
  17. 【JEECG技术文档】JEECG在线聊天插件功能集成文档
  18. Excel怎么下拉框多选
  19. JavaScript正则式练习
  20. 未来的趋势发展 802.11v网络协议解析

热门文章

  1. linux-2.6.22.6内核启动分析之配置
  2. Python安装tesserocr遇到的各种问题及解决办法
  3. Python学习:14.Python面向对象(一)
  4. 编写DVWA暴力破解High级别的Python脚本
  5. android studio 插件开发(自动生成框架代码插件)
  6. 将python自动转换为.exe文件
  7. 学号20155311 2016-2017-2 《Java程序设计》第6周学习总结
  8. print puts p
  9. BZOJ2140_稳定婚姻_KEY
  10. 成都Uber优步司机奖励政策(4月18日)