P1198 最大数 线段树水题
这道题模拟一下可以过,但是我们发现线段树也可以安全水过......
写的线段树只需要滋磁单点修改,区间求max即可
我一开始犯了一个很SB的错误:每次插入修改了t,然后疯狂爆0到怀疑人生...
而且我写的线段树还不明不白的碾了胡雨菲几年前写的。
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
const int N = ;
typedef long long LL;
LL mo;
LL Max[N<<]; void build(int l,int r,int o)
{
Max[o]=-;
if(l==r)
{
return;
}
int mid=(l+r)>>;
build(l,mid,o<<);
build(mid+,r,o<<|);
return;
} void add(int x,int v,int l,int r,int o)
{
//printf("add:x=%d v=%d l=%d r=%d o=%d\n",x,v,l,r,o);
if(l==x&&r==x)
{
//printf("Max[%d]=%d\n",o,v);
Max[o]=v;
return;
}
int mid=(l+r)>>;
if(x<=mid)add(x,v,l,mid,o<<);
else add(x,v,mid+,r,o<<|);
Max[o]=max(Max[o<<],Max[o<<|]);
return;
} LL ask(int L,int R,int l,int r,int o)
{
if(L<=l&&r<=R) return Max[o];
if(R<l||r<L) return -;
int mid=(l+r)>>;
return max(ask(L,R,l,mid,o<<),ask(L,R,mid+,r,o<<|));
} int main()
{
LL m,top=,x,t=;char flag;
scanf("%lld%lld",&m,&mo);
build(,m,);
for(int i=;i<=m;i++)
{
cin>>flag>>x;
if(flag=='Q')
{
if(!x) {printf("0\n");continue;}
t=ask(top-x,top-,,m,);
printf("%lld\n",t);
}
else
{ add(top,(t+x)%mo,,m,);
top++;
}
}
return ;
}
AC代码:
P1198 最大数 线段树水题的更多相关文章
- POJ 3468 A Simple Problem with Integers(线段树水题)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 135904 ...
- hdu 1754 I Hate It(线段树水题)
>>点击进入原题测试<< 思路:线段树水题,可以手敲 #include<string> #include<iostream> #include<a ...
- 【wikioi】1191 数轴染色(线段树+水题)
http://wikioi.com/problem/1191/ 太水的线段树了,敲了10分钟就敲完了,但是听说还有一种并查集的做法?不明觉厉. #include <cstdio> #inc ...
- codeforces 339C Xenia and Bit Operations(线段树水题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Xenia and Bit Operations Xenia the beginn ...
- 洛谷 - P1198 - 最大数 - 线段树
https://www.luogu.org/problemnew/show/P1198 要问区间最大值,肯定是要用线段树的,不能用树状数组.(因为没有逆元?但是题目求的是最后一段,可以改成类似前缀和啊 ...
- hdu - 1394 Minimum Inversion Number(线段树水题)
http://acm.hdu.edu.cn/showproblem.php?pid=1394 很基础的线段树. 先查询在更新,如果后面的数比前面的数小肯定会查询到前面已经更新过的值,这时候返回的sum ...
- P1198最大数——线段树点修改&&模板题
题目 题目链接 大意:维护一个数列,有两种操作: 查询操作Q L:查询当前数列中末尾L个数中的最大的数 插入操作A n:将n加上t再对D取模,将所得值插入数列末尾 解决方案 由题意知,只有两种操作 ...
- codevs 1690 开关灯 线段树水题
没什么好说的,标记put表示开关是否开着. #include<cstdio> #include<cstring> #include<algorithm> using ...
- [ACM_数据结构] Color the ball [线段树水题][数组开大]
Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次 ...
随机推荐
- Linux lsof 命令
lsof(list open files)是一个查看进程打开的文件的工具. 在 linux 系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以 lsof 命令不仅可以查 ...
- 解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file
原文地址:http://blog.csdn.net/yjk13703623757/article/details/53217377 一.问题 运行hydra时,提示错误: hydra : error ...
- 理解使用static import 机制
J2SE 1.5里引入了“Static Import”机制,借助这一机制,可以用略掉所在的类或接口名的方式,来使用静态成员.本文介绍这一机制的使用方法,以及使用过程中的注意事项. 在Java程序中,是 ...
- PHP从入门到精通(六)
PHP中的错误处理 1.PHP的错误级别:见表格.2.调整PHP错误报告级别:PHP中,调整错误报告级别的方式有两种: ①修改PHP.ini文件的配置项.a.会导致在当前服务器环境下所有PHP文件都受 ...
- oracle系统化学习笔记
CentOS 4.x上安装Oracle 9i(3讲) oracle9i非常成熟,刚学主要是学9i比较经典 学会安装9i具有现实意义,先学完9i再学11g等比较好 1.安装centos 2.安装orac ...
- “Linux内核分析”实验报告
Linux内核分析:实验一 潘俊洋 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 ...
- sqoop 使用笔记
好久没有更新自己技术博客,现在开始工作了,把自己遇到的问题写到这里边来 主要把自己的问题写出来,分享给大家 sqoop 导入数据时候 有时候会遇到mysql 中有sql 中的关键字 这时候如果直接导出 ...
- Python入门:如何使用第三方库?
这是关于Python的第13篇文章,也是关于<编程小白的第1本Python入门书>内容的最后一篇,主要介绍下如何使用第三方库. 1. 第三方库 Python相当于一个手机,第三方库相当于手 ...
- 在Windows下查看Java的JRE路径
java -showversionecho %JAVA_HOME%path 这个方法可以确认当前java.exe的版本,但是并不能确定输出JRE的具体路径. JAVA_HOME的路径,也不一定就是当前 ...
- WIN10基于Hyper-V下运行kubernetes入门问题
http://www.cnblogs.com/shanyou/p/8503839.html 安装配置好之后启动,查看ip的方法: minikube status minikube ip 查看仪表盘da ...