[日常摸鱼]Luogu1801 黑匣子(NOI导刊)
2024-10-15 17:04:31
题意:写一个数据结构,要求滋兹两种操作,ADD:插入一个数,GET:令$i++$然后输出第$i$小的数
这个数据结构当然是平衡树啦!(雾)
写个Treap直接过掉啦…
#include<cstdio>
#include<cstdlib>
typedef long long lint;
const int N=200005;
inline lint read()
{
lint s=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){s=s*10+c-'0';c=getchar();}
return s*f;
}
struct Treap
{
lint v;
int l,r,w,rnd,s;
}tr[N];
int n,m,cnt;
int f[N],a[N]; inline void updata(int x)
{
tr[x].s=tr[tr[x].l].s+tr[tr[x].r].s+tr[x].w;
}
inline void rturn(int &x)
{
int t=tr[x].l;tr[x].l=tr[t].r;tr[t].r=x;
tr[t].s=tr[x].s;updata(x);x=t;
}
inline void lturn(int &x)
{
int t=tr[x].r;tr[x].r=tr[t].l;tr[t].l=x;
tr[t].s=tr[x].s;updata(x);x=t;
}
inline void insert(int &k,lint val)
{
if(k==0)
{
k=++cnt;tr[k].v=val;
tr[k].s=tr[k].w=1;tr[k].rnd=rand();
return;
}
tr[k].s++;
if(tr[k].v==val)
tr[k].w++;
else if(tr[k].v<val)
{
insert(tr[k].r,val);
if(tr[tr[k].r].rnd<tr[k].rnd)lturn(k);
}else
{
insert(tr[k].l,val);
if(tr[tr[k].l].rnd<tr[k].rnd)rturn(k);
}
}
inline void query(int k,int val,int &ans)
{
if(k==0)return;
if(val<=tr[tr[k].l].s)
query(tr[k].l,val,ans);
else if(tr[tr[k].l].s+tr[k].w<val)
query(tr[k].r,val-tr[tr[k].l].s-tr[k].w,ans);
else
ans=k;
}
int main()
{
int x,k=0,rot=0;m=read();n=read();
for(register int i=1;i<=m;i++)a[i]=read();
for(register int i=1;i<=n;i++)x=read(),f[x]++;
for(register int i=1;i<=m;i++)
{
insert(rot,a[i]);
while(f[i]--)
{
int ans;query(rot,++k,ans);
printf("%lld\n",tr[ans].v);
}
}
return 0;
}
正解应该是对顶堆…我好像不会做…
最新文章
- PDO
- Android检测网络是否正常代码!
- RGB颜色表
- Servlet访问第一次500,刷新后404的解决办法
- Setup Spark source code environment
- oracle 触发器实现主键自增
- 使用sslsplit嗅探tls/ssl连接
- Java I/O 扩展
- js怪招(摘录篇)
- JS浏览器对象-Location对象
- Entity Framework Batch Update
- 启用oracle 11g自己主动收集统计信息
- JAVA个人理解
- Android开发中的安全
- CKEditor、UBB编辑器的使用总结
- 【DB2】Event monitor for locking
- C# 中2个问号的作用。C#的??代表是什么意思
- JMeter学习(十七)JMeter测试MongoDB(转载)
- 工作中用Git对项目进行管理
- ubuntu 常用设置
热门文章
- 02python开发之基本运算符
- 思维导图MindManager有新手引导功能吗
- kafka 数据存储和发送
- mfc c++优化
- 使用Verilog搭建一个单周期CPU
- 20190713_(转)IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决办法 (转)
- arcgis性能检测记录
- HTTP协议数据包
- 第十九章、Model/View开发:QTableView的功能及属性
- 第十四章、Model/View开发:Model/View架构程序设计模式