这种题为什么要用到主席树啊、、8说了,直接上代码

/*
1-n的排列,给定所有前缀的逆序对数量,要求恢复排列
首先能确定最后一个数是什么,然后倒序确定即可
开线段树找空位:如果Ai-Ai-1=k,说明pi前面有k个数比它要大,,即有i-k-1个数比它小,
那么pi排在第i-k位,线段树查询第i-k个空位,然后把这个空位填上即可
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 50005
int n,a[maxn],ans[maxn]; #define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
int sum[maxn<<];
void build(int l,int r,int rt){
if(l==r){sum[rt]=;return;}
int m=l+r>>;
build(lson);build(rson);
sum[rt]=sum[rt<<]+sum[rt<<|];
}
void update(int l,int r,int rt,int pos){
if(l==r){sum[rt]--;return;}
int m=l+r>>;
if(pos<=m)update(lson,pos);
else update(rson,pos);
sum[rt]=sum[rt<<]+sum[rt<<|];
}
int query(int l,int r,int rt,int k){
if(l==r)return l;
int m=l+r>>;
if(k<=sum[rt<<])return query(lson,k);
else return query(rson,k-sum[rt<<]);
} int main(){
int T;
cin>>T;
while(T--){
cin>>n;
for(int i=;i<=n;i++)cin>>a[i];
build(,n,);
for(int i=n;i>=;i--){
int k=a[i]-a[i-];
ans[i]=query(,n,,i-k);
update(,n,,ans[i]);
}
for(int i=;i<n;i++)cout<<ans[i]<<" ";
cout<<ans[n]<<endl;
}
}

hdu5592 倒序求排列+权值线段树的更多相关文章

  1. codevs1688 求逆序对(权值线段树)

    1688 求逆序对  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 给定一个序列a1,a2,…, ...

  2. 动态求区间K大值(权值线段树)

    我们知道我们可以通过主席树来维护静态区间第K大值.我们又知道主席树满足可加性,所以我们可以用树状数组来维护主席树,树状数组的每一个节点都可以开一颗主席树,然后一起做. 我们注意到树状数组的每一棵树都和 ...

  3. 2019.01.14 bzoj5343: [Ctsc2018]混合果汁(整体二分+权值线段树)

    传送门 整体二分好题. 题意简述:nnn种果汁,每种有三个属性:美味度,单位体积价格,购买体积上限. 现在有mmm个询问,每次问能否混合出总体积大于某个值,总价格小于某个值的果汁,如果能,求所有方案中 ...

  4. CF1093E Intersection of Permutations 树状数组套权值线段树

    \(\color{#0066ff}{ 题目描述 }\) 给定整数 \(n\) 和两个 \(1,\dots,n\) 的排列 \(a,b\). \(m\) 个操作,操作有两种: \(1\ l_a\ r_a ...

  5. [BZOJ 3295] [luogu 3157] [CQOI2011]动态逆序对(树状数组套权值线段树)

    [BZOJ 3295] [luogu 3157] [CQOI2011] 动态逆序对 (树状数组套权值线段树) 题面 给出一个长度为n的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次 ...

  6. 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP

    2892: 强袭作战 Time Limit: 50 Sec  Memory Limit: 512 MBSubmit: 45  Solved: 30[Submit][Status][Discuss] D ...

  7. BZOJ 3110 ZJOI 2013 K大数查询 树套树(权值线段树套区间线段树)

    题目大意:有一些位置.这些位置上能够放若干个数字. 如今有两种操作. 1.在区间l到r上加入一个数字x 2.求出l到r上的第k大的数字是什么 思路:这样的题一看就是树套树,关键是怎么套,怎么写.(话说 ...

  8. 线段树(单标记+离散化+扫描线+双标记)+zkw线段树+权值线段树+主席树及一些例题

    “队列进出图上的方向 线段树区间修改求出总量 可持久留下的迹象 我们 俯身欣赏” ----<膜你抄>     线段树很早就会写了,但一直没有总结,所以偶尔重写又会懵逼,所以还是要总结一下. ...

  9. B20J_2733_[HNOI2012]永无乡_权值线段树合并

    B20J_2733_[HNOI2012]永无乡_权值线段树合并 Description:n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到 n来表示.某些 ...

随机推荐

  1. JS 字符串处理相关(持续更新)

    一.JS判断字符串中是否包含某个字符串 indexOf() indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则该方法返回 -1. var str ...

  2. 查看CLOUD系统级IIS日志

    1.进入IIS,点击查看日志文件 2.分不同文件夹存放

  3. 这才是你想要的 Python 可视化神器

    Plotly Express 是一个新的高级 Python 可视化库:它是 Plotly.py 的高级封装,它为复杂的图表提供了一个简单的语法. 受 Seaborn 和 ggplot2 的启发,它专门 ...

  4. Nginx 容器

    L39-40

  5. php中fastcgi和php-fpm是什么东西

    参考和学习了以下文章: 1. mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据 2. 实战Nginx_取代 为了如何一步步的引出fastcgi和php-fpm,我先一点一 ...

  6. Gym - 101350G Snake Rana(容器原理)

    Old Macdonald wants to build a new hen house for his hens. He buys a new rectangular area of size N  ...

  7. Openresty安装及使用配置(OPENRESTY+NGINX)

    Openresty 简介 Openresty是一个基于NGINX和Lua的高性能Web平台,内部有大量的Lua库和第三方模块,能够很方便的搭建处理高并发,扩展性高的Web平台和动态网关,充分利用 Ng ...

  8. python selenium简单安装及使用

    1.安装 pip install selenium 2.下载浏览器对应的Driver 链接地址:https://sites.google.com/a/chromium.org/chromedriver ...

  9. .net core 多租户框架整理

    一 saaskitAsp.Net Core multi-tenant application Sample using #SaaSKithttps://github.com/saaskit/saask ...

  10. 使用 Google

    非原版 Glgoo:http://www.glgoo.com/谷粉搜搜:http://www.gfsoso.net/谷粉搜搜:http://www.gfsswy.com/谷粉搜搜:http://guf ...