题意:

给你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;
}

lightoj1087 【线段树】的更多相关文章

  1. bzoj3932--可持久化线段树

    题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...

  2. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  3. codevs 1576 最长上升子序列的线段树优化

    题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...

  4. codevs 1080 线段树点修改

    先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...

  5. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  6. PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树

    #44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...

  7. CF719E(线段树+矩阵快速幂)

    题意:给你一个数列a,a[i]表示斐波那契数列的下标为a[i],求区间对应斐波那契数列数字的和,还要求能够维护对区间内所有下标加d的操作 分析:线段树 线段树的每个节点表示(f[i],f[i-1])这 ...

  8. 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序

    3779: 重组病毒 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 224  Solved: 95[Submit][Status][Discuss] ...

  9. 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1878  Solved: 846[Submit][Status ...

随机推荐

  1. linux 查找最后几条数据

    tail(选项)(参数) -n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容. 例如:grep 查询 2018-02-*/*.log |tail -n 5查询 ...

  2. poj 1163 The Triangle &amp;poj 3176 Cow Bowling (dp)

    id=1163">链接:poj 1163 题意:输入一个n层的三角形.第i层有i个数,求从第1层到第n层的全部路线中.权值之和最大的路线. 规定:第i层的某个数仅仅能连线走到第i+1层 ...

  3. C# WPF DataGrid控件实现三级联动

    利用DataGrid控件实现联动的功能,在数据库客户软件中是随处可见的,然而网上的资料却是少之又少,令人崩溃. 本篇博文将介绍利用DataGrid控件模板定义的三个ComboBox实现“省.市.区”的 ...

  4. 2015年度新增开源软件排名TOP 100,EasyDarwin开源流媒体服务器排名第17

    本榜单包含 2015 年开源中国新收录的 5977 款开源软件中,根据软件本身的关注度.活跃程度进行排名前 100 名的软件.从这份榜单中或许可以了解到最新业界的趋势. 榜单详情:http://www ...

  5. poj 2154 Color < 组合数学+数论>

    链接:http://poj.org/problem?id=2154 题意:给出两个整数 N 和 P,表示 N 个珠子,N种颜色,要求不同的项链数, 结果 %p ~ 思路: 利用polya定理解~定理内 ...

  6. 如何设置Tomcat的JVM虚拟机内存大小

    我的是解压版的tomcat: 首先找到tomcat中bin目录下: catalina.bat 文件,打开这个文件,在 @echo off 下面一行,加上一行代码: set JAVA_OPTS=-ser ...

  7. hdu1427 速算24点

    </pre><pre> //#pragma comment(linker, "/STACK:102400000,102400000") //HEAD #in ...

  8. win7和win2008 r2下配置IIS7(ASP.net运行环境)

    win7和win2008 r2下配置IIS7(ASP.net运行环境) 1.先要设置应用程序池(ApplicationPool)为Classic.NETAppPool,而不是默认的DefaultApp ...

  9. 在react里面使用jquery插件

    在react里面使用jquery插件 背景: 虽然现在react,vue等框架开启了前端开发的新篇章, 但对于一些比较复杂的页面,比如想在项目里面生成 组织架构图,人员汇报关系等还是需要用到之前的 j ...

  10. ALSA lib调用实例

    1. Display Some PCM Types and Formats 2. Opening PCM Device and Setting Parameters /* This example o ...