题意:

给你n个数,然后给你q个询问,有两种询问:

a: 表示在右边插入一个数

c:表示从左边拿出一个数,然后输出;

思路:

一开始在想,自己手上的黑科技:线段树和树状数组

线段树上的操作:

求区间最大,没说区间第几个啊;

树状数组:

搞一发前缀和,妈个鸡,树状数组还需要知道下标和位置;

还有什么:

数组,感觉黑科技没什么了;

然后。。。

线段树维护区间有多少个数,好像很对啊,初始化建树就是n+q长度的区间,然后每次插入就是第n+i个,每次插入,删除都是log级别的;

后来线段树打完居然没什么错,感动啊;

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=2e5+10; struct SegT{
bool flag;
int left,right;
int num,v;
};
SegT q[N*4];
int n,Q; void Build(int num,int L,int R)
{
q[num].left=L;
q[num].right=R;
if(L==R)
{
if(L<=n)
{
scanf("%d",&q[num].v);
q[num].flag=true;
q[num].num=1;
return;
}
else
{
q[num].flag=false;
q[num].num=0;
return;
}
}
int mid=(L+R)/2;
Build(2*num, L,mid);
Build(2*num+1,mid+1,R);
q[num].num=q[2*num].num+q[2*num+1].num;
} void add(int num,int id,int x)
{
if(q[num].left==id&&q[num].left==q[num].right)
{
q[num].flag=true;
q[num].v=x;
q[num].num=1;
return;
}
int mid=(q[num].left+q[num].right)/2;
if(mid>=id)
add(2*num,id,x);
else
add(2*num+1,id,x);
q[num].num=q[2*num].num+q[num*2+1].num;
} int DEL(int num,int id)
{
if(q[num].left==q[num].right)
{
q[num].num=0;
q[num].flag=false;
return q[num].v;
}
int ans=0;
if(q[2*num].num>=id)
ans=DEL(2*num,id);
else
ans=DEL(2*num+1,id-q[2*num].num);
q[num].num=q[2*num].num+q[2*num+1].num;
return ans;
} int main()
{
int T,cas=1;
scanf("%d",&T);
while(T--)
{
char txp[5];
int temp;
scanf("%d%d",&n,&Q);
Build(1,1,n+Q);
printf("Case %d:\n",cas++);
for(int i=1;i<=Q;i++)
{
scanf("%s%d",txp,&temp);
if(txp[0]=='a')
add(1,n+i,temp);
else
{
if(q[1].num<temp)
puts("none");
else
printf("%d\n",DEL(1,temp));
}
}
}
return 0;
}

最新文章

  1. npm相关
  2. [MS bug]安装SQL Server 2008 错误:is not a valid login or you do not have permission
  3. hbase的rowkey简单设计
  4. Spring框架整合Struts2
  5. mysql 5.6 参数详解
  6. Hadoop学习-HDFS篇
  7. 微信账号 echo_server 的实现
  8. Android 打造任意层级树形控件 考验你的数据结构和设计
  9. Python爬取豆瓣指定书籍的短评
  10. Vue.js简单记录
  11. pandas 对象中 to_pickle 方法参数命名问题,不能用frame
  12. vue浏览器滚动加载更多
  13. caffe 利用VGG训练自己的数据
  14. shell实现每天0点备份mysql数据库
  15. C/C++——程序的内存分配
  16. Python装饰器几个有用又好玩的例子
  17. 使用Fiddler手机抓包https-----重要
  18. Windows Server 2012如何实现双网卡绑定
  19. golang web开发获取get、post、cookie参数
  20. 记录一下idea的破解方法

热门文章

  1. Sum It Up POJ 1564 HDU 杭电1258【DFS】
  2. EasyDarwin开源流媒体云平台之EasyRMS录播服务器功能设计
  3. Vue 单页面应用 SEO SPA single page application advantages and disadvantages
  4. Performance Tuning Using Linux Process Management Commands
  5. EM算法索引
  6. [Usaco2005 Dec]Cleaning Shifts 清理牛棚
  7. 【C++基础学习】成员对象与对象数组
  8. selenium2 浏览器版本问题
  9. Redis相关的内核参数解释与设置
  10. 向HTML页面传入参数