树上神奇 逆 逆序对(我的叫法)hh的小纸条 重中之重!!!!!
HH:
输入
接下来n-1行:表示第二个数到第n个数前面有多少个数比它小。
(因为第一个数前面没有任何数,所以不需要输入)
输出
样例输入 Copy
5
1
2
1
0
样例输出 Copy
2
4
5
3
1
经过长时间的思考(瞎碰),我发现了一件事:
题目翻译成这样:给定每个点的逆序对的数量,求每个点。
我和廖半仙一开始进行了愉快的跳表操作。
事实证明它是完全错的。
总的来说,这题目被坑了的唯一原因就是: MAXN呐!MAXN呐!
+1=100
-1=60
maxn。。。
ANSWER:
我发现:最后一个值是可以确定的。
因为我们知道最后一个值前面有几个点比它小,于是这个点就是第n+1大的点。
把这个点塞到答案数组里面。
找前一个大小,我们发现:删去第一个点,再进行以上操作,就可以得到这个点的大小。
于是:算法确认:
1、找当前数字对应的第a[n]+1大
2、塞答案
3、删去这个数。
重点来了。
我们删去这个数,怎么实现呢?
如果只要数组硬爆就能解决的事,那还是wzy大佬出的蓝题吗?
不可能!
我需要一个数据结构,来维护这个东西。
想想看数据结构们,有什么可以删点呢?删点之后还要把后面的补上来....
我问到了邻接表删点,甚至想到了主席树删点(区间第k小,动态点删掉然后查询即可)
但是....都不行
平衡树吧,有删点操作。
但是我不会。
感谢shy大佬的shy树。
MAXN呐!MAXN呐!
+1=100
-1=60
maxn。。。
上代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6;
int n,a[maxn],ans[maxn];
struct tree
{
int ls,rs,size,pre;
}t[maxn*];
int tot=;
int build(int l,int r)
{
if(l==r)
{
t[++tot].size=;//子树大小,叶节点的子树大小=1
t[tot].pre=l;//节点的值=l,12345.....
return tot;//返回当前叶节点的编号
}
int mid=(l+r)>>;
int x=++tot;//树节点的编号
t[x].ls=build(l,mid);//同主席树建树模式,ls rs=下面的返回值
t[x].rs=build(mid+,r);
t[x].size=r-l+;//差分处理子树大小
return x;
}
int ask(int x,int l,int r,int k)
{
if(l==r)
{
t[x].size--;//叶节点,删除它
return t[x].pre;//返回叶节点的值
}
t[x].size--;//走一条边,删一个点
int mid=l+r>>;
int mik=mid+;
int q=k-t[t[x].ls].size;
if(k<=t[t[x].ls].size)return ask(t[x].ls,l,mid,k);//二叉搜索树部分,有点类似主席树,通过差分不停在节点上滑来滑去,直到找到相应的叶节点
else return ask(t[x].rs,mik,r,q);
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);//n-1个
}
a[]=;//第一个数前面没有比它小的
build(,n);//建树
for(int i=n;i>;i--)
{
ans[i]=ask(,,n,a[i]+);
}
for(int i=;i<=n;i++) printf("%d\n",ans[i]);
return ;
}
思路就是二叉查找树,建树之后,根据a数组,大了往左找,小了往右找,然后找到这个值为止,删点。
膜拜shy树
%%%shy大佬,tql
(完)
树上神奇 逆 逆序对(我的叫法)hh的小纸条 重中之重!!!!!的更多相关文章
- LOJ #2831. 「JOISC 2018 Day 1」道路建设 线段树+Link-cut-tree
用 LCT 维护颜色相同连通块,然后在线段树上查一下逆序对个数就可以了. code: #include <cstdio> #include <algorithm> #inclu ...
- POI题解整合
我也不知道为啥我就想把POI的题全都放到一篇blog里写完. POI 2005 SAM-Toy Cars 贪心,每次选下次出现最晚的. POI 2006 KRA-The Disks 箱子位置单调,所以 ...
- P1412 经营与开发
题目描述 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以“EX”为开头的英语单词. eXplore(探索) eXpand(拓张与发展) eXploit(经营与开发) ...
- 2014年年度工作总结--IT狂人实录
2014年也是我人生最重要的一年,她见证了我的成长与蜕变,让我从一个迷茫的旅者踏上一条柳暗花明的路. 春宇之行 从春宇短暂的9个月,却经历常人难以想想的风风雨雨,首先要感谢春宇公司给我带来了安逸宽松的 ...
- windows中的软链接硬链接等
学校嘛,有些时候还是得逆逆上网客户端啥的,并且学校的不少工作,这Windows的需求还是挺强的,之前Win10的体验并不是太好,不过时隔这么久,打算从7升级到10了,恰好系统也该换了. 首先是命令行的 ...
- php_1
简介:(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发,语言的风格有 ...
- NOI导刊集训感言
圆溜溜,尤其首先,集训的收获很大,远远比自学要来的快 其次,新知识点到时没怎么讲(A*,数论除外,倒是真的学会不少以前碰都不敢碰的定理呀,结论之类的东西),但是还是深深地感受到了集训的困难,七天的节奏 ...
- 「BJWC2010」模板严格次小生成树
题目描述 小 \(C\) 最近学了很多最小生成树的算法,\(Prim\) 算法.\(Kruskal\) 算法.消圈算法等等.正当小\(C\)洋洋得意之时,小\(P\)又来泼小\(C\)冷水了.小\(P ...
- 【牛客挑战赛32E】树上逆序对
题目 数据范围非常奇怪,询问的逆序对个数\(k\leq 30000\),我们应该可以把所有的情况都求出来 发现对于树上两点\(x,y\),如果\(x\)是\(y\)的祖先,那么绝对值较大的点的符号决定 ...
随机推荐
- Mariadb 基于Mycat实现读写分离
环境:Mariadb主:192.168.200.129 Mariadb从:192.168.200.114 Mycat :192.168.200.112 (1) 安装jdk,先查看本机是 ...
- Java集合总结—再也不怕面试问到集合了
Java集合总结 1.常见的集合 Map接口和Collection接口是所有集合框架的父接口: Collection接口的子接口包括:Set接口和List接口 Map接口的实现类主要有:HashMap ...
- Did You AK Today? (今天你AK了吗?)
考虑到本文读者年龄原因,本文改为使用简体中文撰写. 题目描述 今有正整数 n,kn,kn,k,求 1−n1-n1−n 共 nnn 个数的全排列,按字典序的第 kkk 个. 数据满足 1≤n≤105,1 ...
- 详细解读 Spring AOP 面向切面编程(一)
又是一个周末, 今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之. ...
- webpack——npm -i 与npm install -s与-d的区别
在 package.json 文件里面的[devDependencies]和[dependencies]对象有什么区别呢? devDependencies 里面的插件只用于开发环境,不用于生产环境, ...
- java集合第一节,List简单介绍
Java中List集合的常用方法 List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来. package 集合; import java.ut ...
- 使用 pdf.js 在网页中加载 pdf 文件
在网页中加载并显示PDF文件是最常见的业务需求.例如以下应用场景:(1)在电商网站上购物之后,下载电子发票之前先预览发票.(2)电子商务管理系统中查看发布的公文,公文文件一般是PDF格式的文件. 目前 ...
- 使用face-api.js实现人脸识别(一)
功能 第一阶段实现对图片中人脸的识别并打上标签(比如:人名) 第二阶段使用摄像头实现对人物的识别,比如典型的应用做一个人脸考勤的系统 资源 face-api.js https://github.com ...
- Java基础(三十)泛型程序(Generic Programming)
一.泛型程序的定义和使用 1.为什么要使用泛型程序设计 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用.同时,使得程序具有更好的可读性和安全性. ArrayList<String&g ...
- django-模板之自定义模板路径(一)
一般情况下我们的模板路径是位于app下的templates,我们可以根据实际情况自己定义模板的路径. 我们在与app的同级目录下建立一个templates,并在settings.py中进行路径配置. ...