题目链接:http://oj.xjtuacm.com/problem/14/【分析】二元的逆序对应该都会求,可以用树状数组。这个题要求K元,我们可以看成二元的。我们先从后往前求二元逆序对数,

然后对于每一个数就可以求出在这个数后面的比他小的数的数量。然后我们再加一元时,当前扫到a[i],那么在树状数组中,对于那些比他大的数的 逆序对数+=上一元a[i]的逆序对数。

#include <bits/stdc++.h>
#define met(a,b) memset(a,b,sizeof a)
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lowbit(x) (x&(-x))
using namespace std;
typedef long long ll;
ll mod = 1e9+7;
const int N=2e4+50;
const int M=N*N+10;
int n,m,k,a[N];
ll tre[N],ans1[N],ans2[N];
void add(int x,ll s){while(x<=n){tre[x]+=s;tre[x]%=mod;x+=lowbit(x);}
}
ll Sum(int x){ll ret=0;while(x>0){ret+=tre[x];ret%=mod;x-=lowbit(x);}return ret;
}
int main() {int u,v;int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d",&a[i]),ans2[i]=1;if(m==1){printf("%d\n",n);continue;}for(int t=2;t<=k;t++){for(int i=1;i<=n;i++)ans1[i]=ans2[i],ans2[i]=tre[i]=0;for(int i=n;i>=1;i--){ans2[a[i]]=Sum(a[i]);add(a[i],ans1[a[i]]);}}ll ans=0;for(int i=1;i<=n;i++)ans=(ans+ans2[i])%mod;printf("%lld\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/jianrenfang/p/6710162.html

XJTUOJ wmq的队伍(树状数组求 K 元逆序对)相关推荐

  1. nyoj 1261 音痴又音痴的LT(离散化+树状数组求K小数)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1261 解题思路:比较水的题,用离散化+树状数组求K小数即可,先用一次离线处理. #inc ...

  2. 树状数组相关应用之逆序对问题

    求逆序对 一元逆序对问题:POJ-2299 此题本质是一个求逆序对问题,对于一个无序数列,我们按照其顺序依次输入,并在每次输入时通过树状数组对已输入数列在其后方的序列进行个数求和,即可得到逆序数(先输 ...

  3. loj #535. 「LibreOJ Round #6」花火 树状数组求逆序对+主席树二维数点+整体二分...

    $ \color{#0066ff}{ 题目描述 }$ 「Hanabi, hanabi--」 一听说祭典上没有烟火,Karen 一脸沮丧. 「有的哦-- 虽然比不上大型烟花就是了.」 还好 Shinob ...

  4. 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)

    链接:https://ac.nowcoder.com/acm/contest/308/D 来源:牛客网 tokitsukaze and Inverse Number 时间限制:C/C++ 1秒,其他语 ...

  5. hdu1754(树状数组求最值问题)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)

    题目链接:http://poj.org/problem?id=2299 Description In this problem, you have to analyze a particular so ...

  7. 离散化+树状数组求逆序数

    题目:http://poj.org/problem?id=2299 离散化是一种常用的技巧,有时数据范围太大,可以用来放缩到我们能处理的范围 因为其中需排序的数的范围0--- 999999999:显然 ...

  8. Tido 习题-二叉树-树状数组求逆序对

    这里给大家提供一个全新的求逆序对的方法 是通过树状数组来实现的 题目描述   样例输入 Copy 5 2 3 1 5 4 样例输出 Copy 3 提示       #include<iostre ...

  9. 树状数组求逆序对_初识树状数组

    树状数组是用来解决数列多次单点修改和前缀和查询的利器. 首先我们来看问题的原型: 已知一个长度为n(n<=10 0000)的数列,初始值都是零,现在我们要对数列施加两种类型的操作共q(q< ...

最新文章

  1. 【LeetCode】55.跳跃游戏
  2. windbg 符号表
  3. 带有WildFly Swarm的远程JMS
  4. spark学习-31-spark2.2.0中Utils.getCallSite()的作用
  5. 二、RabbitMQ常用交换器
  6. 【DIOCP开源项目】实际应用案例
  7. Windows Azure 系列-- Azure Queue的操作
  8. java简单的思维逻辑训练_简单的代码,适合初学者,锻炼逻辑思维能力,可以练习练习!...
  9. SQLite:查找到最新更新的一条记录
  10. C语言流程图生成器的具体操作流程是什么,分享绘制C语言流程图方法
  11. 多功能下拉分页选择插件SelectPage插件 http://www.jq22.com/jquery-info14227
  12. 2021软科 中国计算机专业 排名
  13. 蓝桥杯 A组 迷宫地图
  14. linux wep加密方式,iPad wifi 断网问题通过设置加密方式(Mixed WEP)解决
  15. 拼字法以及98五笔字根码元应用举例
  16. 【AP/AR】借项通知单和贷项通知单的区别
  17. 基金从业考试的考试形式是什么?0906
  18. simulink电机仿真学习 - SVPWM原理分析及仿真分析
  19. Error while executing: am startservice ***/com.android.tools.fd.runtime.InstantRunS
  20. 浙江商人的23条做人原则

热门文章

  1. 【一】Jmeter:体系结构
  2. 达梦数据charindex_更新日志 · dotnetcore/FreeSql Wiki · GitHub
  3. 编写linux脚本操作 java 服务
  4. DQL 学习-- DQL 基本元素
  5. 交叉驰豫的影响因素_墨点对uv打印机印刷质量影响
  6. 互联网浏览本地html,如何加载本地HTML文件,如果没有互联网连接
  7. hashmap put复杂度_你碰到过几种HashMap在高并发下出现的问题,哪些可能出现的问题...
  8. RMQ(求区间最值问题)
  9. Ancient Messages UVA - 1103
  10. Keil MDK下载程序时的相关设置