BZOJ 1012 线段树||单调队列
非常裸的线段树 ||
单调队列:
假设一个节点在队列中既没有时间优势(早点入队)也没有值优势(值更大),那么显然不管在如何的情况下都不会被选为最大值。
既然它仅仅在末尾选。那么自然能够满足以上的条件。
线段树
#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 线段树||单调队列的更多相关文章
- 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP
2892: 强袭作战 Time Limit: 50 Sec Memory Limit: 512 MBSubmit: 45 Solved: 30[Submit][Status][Discuss] D ...
- bzoj 1171 大sz的游戏& 2892 强袭作战 (线段树+单调队列+永久性flag)
大sz的游戏 Time Limit: 50 Sec Memory Limit: 357 MBSubmit: 536 Solved: 143[Submit][Status][Discuss] Des ...
- 5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集
LINK:波波老师 LINK:同bzoj 1396 识别子串 不过前者要求线性做法 后者可以log过.实际上前者也被我一个log给水过了. 其实不算很水 我自认跑的很快罢了. 都是求经过一个位置的最短 ...
- POJ 2823 Sliding Window (线段树/单调队列)
题目不说了,可以用线段树或者单调队列,下面附上代码. 线段树: #include <iostream> #include <stdio.h> #include <algo ...
- 【BZOJ1171】大sz的游戏(线段树+单调队列)
点此看题面 大致题意: 有\(n\)个点,两点间最大通讯距离为\(L\).已知除\(1\)号点外第\(i\)个点能够发出和接收的信号区间\([l_i,r_i]\)以及到\(1\)号点的距离\(dis_ ...
- loj #6302. 「CodePlus 2018 3 月赛」寻找车位【线段树+单调队列】
考虑静态怎么做:枚举右边界,然后枚举上边界,对应的下边界一定单调不降,单调栈维护每一列从当前枚举的右边界向左最长空位的长度,这样是O(nm)的 注意到n>=m,所以m<=2000,可以枚举 ...
- Codevs 4373 窗口(线段树 单调队列 st表)
4373 窗口 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只 ...
- Codeforces 781E Andryusha and Nervous Barriers 线段树 单调栈
原文链接https://www.cnblogs.com/zhouzhendong/p/CF781E.html 题目传送门 - CF781E 题意 有一个矩形,宽为 w ,高为 h .一开始会有 w 个 ...
- 洛谷P4425 转盘 [HNOI/AHOI2018] 线段树+单调栈
正解:线段树+单调栈 解题报告: 传送门! 1551又是一道灵巧连题意都麻油看懂的题,,,,所以先解释一下题意好了,,,, 给定一个n元环 可以从0时刻开始从任一位置出发 每次可以选择向前走一步或者在 ...
随机推荐
- Linux getcwd()的实现【转】
转自:http://www.cnblogs.com/alan-forever/p/3721908.html 通过getcwd()可以获取当前工作目录. 1 #include <unistd.h& ...
- LVM更换硬盘
#检测坏道 smartctl -a /dev/sdd #硬盘检测 e2fsck -f /dev/mapper/vg_root-lv_data #重新定义空间大小,将原来的大小上减去要移走的硬盘 res ...
- hdu 3371(启发式合并的最小生成树)
Connect the Cities Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- J.U.C并发框架源码阅读(十二)ConcurrentHashMap
基于版本jdk1.7.0_80 java.util.concurrent.ConcurrentHashMap 代码如下 /* * ORACLE PROPRIETARY/CONFIDENTIAL. Us ...
- AtCoder - 3962 Sequence Growing Hard
Problem Statement Find the number of the possible tuples of sequences (A0,A1,…,AN) that satisfy all ...
- 解析HTML文件 - 运用SgmlReader类来解析HTML文件
运用.NET Framework类来解析HTML文件.读取数据并不是最容易的.虽然你可以用.NET Framework中的许多类(如StreamReader)来逐行解析文件,但XmlReader提供的 ...
- Delphi创建开机启动项的方法示例
Delphi可以通过创建开机启动项键值的方法,将程序添加到开机启动项中.通过本实例代码就可以为您的程序添加到快速启动中,随着Windows一起启动,开机即运行的程序.该实例代码简单,主要是通过添加注册 ...
- Android API level 与version对应关系
https://www.cnblogs.com/jinglecode/p/7753107.html Platform Version API Level VERSION_CODE 中文名称 Andro ...
- ios--计时器演示样例:一闪一闪亮晶晶(动画)
本演示样例实现的动画:UIView定时消失随后又闪现,即一闪一闪的动画 所採用的技术:定时器(NSTimer) + 动画(beginAnimations/commitAnimations) 详细实现步 ...
- JComboBox添加item的赋值类型问题!不一致的话会导致不能更改jcombobox的选择值
在用swing做页面的时候,往往需要设置字体样式,那么,如何用一种方法设置字体之后,在后面的其他页面就不需要再次设置字体了呢? 下面这个方法就可以解决了: JComboBox在对它进行添加子项的时候, ...