题意:写一个数据结构,要求滋兹两种操作,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;
}

正解应该是对顶堆…我好像不会做…

最新文章

  1. PDO
  2. Android检测网络是否正常代码!
  3. RGB颜色表
  4. Servlet访问第一次500,刷新后404的解决办法
  5. Setup Spark source code environment
  6. oracle 触发器实现主键自增
  7. 使用sslsplit嗅探tls/ssl连接
  8. Java I/O 扩展
  9. js怪招(摘录篇)
  10. JS浏览器对象-Location对象
  11. Entity Framework Batch Update
  12. 启用oracle 11g自己主动收集统计信息
  13. JAVA个人理解
  14. Android开发中的安全
  15. CKEditor、UBB编辑器的使用总结
  16. 【DB2】Event monitor for locking
  17. C# 中2个问号的作用。C#的??代表是什么意思
  18. JMeter学习(十七)JMeter测试MongoDB(转载)
  19. 工作中用Git对项目进行管理
  20. ubuntu 常用设置

热门文章

  1. 02python开发之基本运算符
  2. 思维导图MindManager有新手引导功能吗
  3. kafka 数据存储和发送
  4. mfc c++优化
  5. 使用Verilog搭建一个单周期CPU
  6. 20190713_(转)IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决办法 (转)
  7. arcgis性能检测记录
  8. HTTP协议数据包
  9. 第十九章、Model/View开发:QTableView的功能及属性
  10. 第十四章、Model/View开发:Model/View架构程序设计模式