P1966 火柴排队

这题贪心显然,即将两序列中第k大的数的位置保持一致,证明略;

树状数组求逆序对啦

浅谈树状数组求逆序对及离散化的几种方式及应用

方法:从前向后每次将数插入到bit(树状数组)中,求其前缀和(在它之前插入且比它小的数),那么用i(当前插入的数的总数)- 前缀和就是其(以c[i]为结尾)逆序对对数

这个题需要将一个序列按照另一个序列排序,因为只需要移动一个序列,sort排序就有了第k小的数的下标

$c[a[i].id]=b[i].id$

第i小的数在a中的位置就是b中第i小的数应放的位置,相当于以第一个数列为关键字排序第二个数列

#include<bits/stdc++.h>

#define N 1010100
using namespace std; const int mod=; int n,c[N],bit[N],ans;
struct node{
int x,id;
}a[N],b[N]; bool cmp(node A,node B){
return A.x<B.x;
} int lowbit(int k){
return k&(-k);
}
void add(int x,int w){
while(x<=n){
bit[x]+=w;
bit[x]%=mod;
x+=lowbit(x);
}
}
int sum(int x){
int res=;
while(x){
res+=bit[x];
x-=lowbit(x);
res%=mod;
}
return res%mod;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i].x),a[i].id=i;
for(int i=;i<=n;i++) scanf("%d",&b[i].x),b[i].id=i;
sort(a+,a++n,cmp);
sort(b+,b++n,cmp);
for(int i=;i<=n;i++)
c[a[i].id]=b[i].id;
for(int i=;i<=n;i++){
add(c[i],);
ans=(ans+(i-sum(c[i])))%mod;
}
printf("%d\n",ans);
return ;
}

P1774 最接近神的人_NOI导刊2010提高(02)

同样的离散化,只不过是从后向前插入,那么其前缀和就是逆序数。

#include<bits/stdc++.h>
#define N 500005
#define ll long long using namespace std; int n,h[N],c[N];
ll ans;
struct node{
int y;ll x;
bool operator<(const node A)const {
return x==A.x ? y<A.y :x<A.x;
}
}e[N]; void update(int k,int x){
for(;k<=n;k+=k&-k) c[k]+=x;
} ll query(int k){
ll an=;
for(;k;k-=k&-k) an+=c[k];
return an;
} int main()
{
cin>>n;
for(int i=;i<=n;i++)
scanf("%lld",&e[e[i].y=i].x);
sort(e+,e++n);
for(int i=n;i;i--){
ans+=query(e[i].y-);
update(e[i].y,);
}cout<<ans;
// printf("%lld",ans);
return ;
}

最新文章

  1. mongodb防火墙配置
  2. The Similarities and Differences Between C# and Java -- Part 1(译)
  3. PL/SQL重新编译包无反应
  4. Redis 集群实现
  5. SGU 260.Puzzle (异或高斯消元)
  6. net.sz.framework 框架 登录服务器架构 单服2 万 TPS(QPS)
  7. CSS常见英语单词属性一览
  8. 基于Jquery+Ajax+Json+存储过程 高效分页
  9. css文本超出省略号
  10. Android GL deadlock timeout error
  11. fastjson与net.sf.json区别
  12. 探索未知种族之osg类生物---渲染遍历之裁剪二
  13. 12 week blog
  14. How to write threats to validity?
  15. 哥们,你真以为你会做这道JVM面试题?
  16. 【Python基础】*args,**args的详细用法
  17. eclipse手动安装alibaba代码规范插件
  18. Java集合类源码解析:LinkedHashMap
  19. Oracle GoldenGate 详解
  20. Android常用传感器用法一览(1)

热门文章

  1. VBS调用Windows API函数
  2. 约瑟夫环问题(猴子选大王)PHP版
  3. 使用VS2005安装和编译QT4.53源码
  4. linux内核中的宏ffs(x)
  5. poj1201 Intervals——差分约束
  6. 02_jni_hello_c函数介绍
  7. C# Pen绘制虚线(System.Drawing.Pen与System.Windows.Media.Pen)
  8. PCB Genesis 无需启动Xmanager图形窗口运行脚本 实现方法
  9. [Swift通天遁地]二、表格表单-(5)实现表格下拉和上拉刷新效果
  10. [Swift通天遁地]六、智能布局-(2)视图对象的尺寸和位置相对约束