非常裸的线段树  ||

单调队列:

假设一个节点在队列中既没有时间优势(早点入队)也没有值优势(值更大),那么显然不管在如何的情况下都不会被选为最大值。

既然它仅仅在末尾选。那么自然能够满足以上的条件。

线段树

#include "stdio.h"
#include "string.h" struct node
{
int l,r,Max;
}data[800010]; int Max(int a,int b)
{
if (a<b) return b;
else return a;
} void build(int l,int r,int k)
{
int mid;
data[k].l=l;
data[k].r=r;
data[k].Max=0;
if (l==r) return ; mid=(l+r)/2; build(l,mid,k*2);
build(mid+1,r,k*2+1);
} void updata(int w,int k,int op)
{
int mid;
if (data[k].l==w && data[k].r==w)
{
data[k].Max=op;
return ;
} mid=(data[k].l+data[k].r)/2; if (w<=mid) updata(w,k*2,op);
else updata(w,k*2+1,op); data[k].Max=Max(data[k*2].Max,data[k*2+1].Max);
} int query(int l,int r,int k)
{
int mid;
if (data[k].l==l && data[k].r==r)
return data[k].Max; mid=(data[k].l+data[k].r)/2; if (r<=mid) return query(l,r,k*2);
else if (l>mid) return query(l,r,k*2+1);
else return Max(query(l,mid,k*2),query(mid+1,r,k*2+1));
} int main()
{
int m,d,t,x,now;
char ch[2];
while (scanf("%d%d",&m,&d)!=EOF)
{
build(1,m,1);
t=0;
now=0;
while (m--)
{
scanf("%s%d",ch,&x);
if (ch[0]=='A')
{
x=(x+t)%d;
now++;
updata(now,1,x); }else
{
t=query(now-x+1,now,1);
printf("%d\n",t);
}
}
}
return 0;
}

单调队列:

#include "stdio.h"
#include "string.h"
int f[200010];
int main()
{
int t,now,m,d,x,i;
char ch[2];
while (scanf("%d%d",&m,&d)!=EOF)
{
t=0;
now=0;
while (m--)
{
scanf("%s%d",ch,&x);
if (ch[0]=='A')
{
f[++now]=(x+t)%d;
for (i=now-1;i>=1;i--)
if (f[i]<f[now]) f[i]=f[now];
else break;
}
else
printf("%d\n",t=f[now-x+1]); }
}
return 0;
}

BZOJ 1012 线段树||单调队列的更多相关文章

  1. 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP

    2892: 强袭作战 Time Limit: 50 Sec  Memory Limit: 512 MBSubmit: 45  Solved: 30[Submit][Status][Discuss] D ...

  2. bzoj 1171 大sz的游戏& 2892 强袭作战 (线段树+单调队列+永久性flag)

    大sz的游戏 Time Limit: 50 Sec  Memory Limit: 357 MBSubmit: 536  Solved: 143[Submit][Status][Discuss] Des ...

  3. 5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集

    LINK:波波老师 LINK:同bzoj 1396 识别子串 不过前者要求线性做法 后者可以log过.实际上前者也被我一个log给水过了. 其实不算很水 我自认跑的很快罢了. 都是求经过一个位置的最短 ...

  4. POJ 2823 Sliding Window (线段树/单调队列)

    题目不说了,可以用线段树或者单调队列,下面附上代码. 线段树: #include <iostream> #include <stdio.h> #include <algo ...

  5. 【BZOJ1171】大sz的游戏(线段树+单调队列)

    点此看题面 大致题意: 有\(n\)个点,两点间最大通讯距离为\(L\).已知除\(1\)号点外第\(i\)个点能够发出和接收的信号区间\([l_i,r_i]\)以及到\(1\)号点的距离\(dis_ ...

  6. loj #6302. 「CodePlus 2018 3 月赛」寻找车位【线段树+单调队列】

    考虑静态怎么做:枚举右边界,然后枚举上边界,对应的下边界一定单调不降,单调栈维护每一列从当前枚举的右边界向左最长空位的长度,这样是O(nm)的 注意到n>=m,所以m<=2000,可以枚举 ...

  7. Codevs 4373 窗口(线段树 单调队列 st表)

    4373 窗口 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只 ...

  8. Codeforces 781E Andryusha and Nervous Barriers 线段树 单调栈

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF781E.html 题目传送门 - CF781E 题意 有一个矩形,宽为 w ,高为 h .一开始会有 w 个 ...

  9. 洛谷P4425 转盘 [HNOI/AHOI2018] 线段树+单调栈

    正解:线段树+单调栈 解题报告: 传送门! 1551又是一道灵巧连题意都麻油看懂的题,,,,所以先解释一下题意好了,,,, 给定一个n元环 可以从0时刻开始从任一位置出发 每次可以选择向前走一步或者在 ...

随机推荐

  1. Python-mysql索引

    MySQL索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询 ...

  2. hdu 5102(巧妙的搜索)

    The K-th Distance Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  3. POJ 2549:Subsets(哈希表)

    [题目链接] http://poj.org/problem?id=2549 [题目大意] 给出一个数集,从中选择四个元素,使得a+b+c=d,最小化d [题解] 我们对a+b建立Hash_table, ...

  4. 【bzoj1087】【互不侵犯King】状压dp裸题(浅尝ACM-D)

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=54329606 向大(hei)佬(e)势力学(di ...

  5. DB Link

    oracle中DB Link select * from TB_APP_HEADER@SSDPPORTAL

  6. MySQL命令show full processlist

    processlist命令的输出结果显示了有哪些线程在运行,可以检查当前数据库的运行状态,两种方式使用这个命令. 1 进入MySQL/bin目录下输入mysqladmin processlist; 2 ...

  7. 线程同步工具之CountDownLatch

    CountDownLatch,一个同步辅助类,在完成一组其他线程汇总执行的操作前,它允许一个或多个线程一直等待 主要方法:      public CountDownLatch(int count); ...

  8. CAP理论下对比ACID模型与BASE模型

    CAP介绍 Consistency(一致性), 数据一致更新,所有数据变动都是同步的.比如网购,库存减少的同时资金增多.Availability(可用性), 好的响应性能.比如支付操作10ms内响应用 ...

  9. debian下QT4编程环境的建立

    转:http://moosewoler.blog.163.com/blog/static/6986605200801013442336/ QT是一款跨平台的C++编程framework.QT的主要特性 ...

  10. Android开发中多进程共享数据

    # 背景 最近在工作中遇到一个需求,需要在接收到推送的时候将推送获得的数据存起来,以供app启动时使用.我们会认为这不是So easy吗?只要把数据存到SharedPreferences中,然后让ap ...