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依次 ...
随机推荐
- Mongodb主从复制/ 副本集/分片集群介绍
前面的文章介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 Master-Slave 模式(主从复制),一种是 Replica Sets 模式(副本集). Mong ...
- IDEA启动服务阻塞,断点过程十分慢的问题
使用debug无法启动项目但是使用run就可以启动程序,而且启动比以前的debug模式快的多 原因: 启动不了的原因是在项目中的方法上打了断点,导致项目无法继续编译 取消方法断点就可以了 在idea官 ...
- 【Beta阶段】第七次Scrum Meeting!
每日任务内容: 本次会议为第七次Scrum Meeting会议~ 由于本次会议项目经理召开时间为10:00,在宿舍召开,召开时长约20分钟. 队员 昨日完成任务 明日要完成任务 刘乾 #177(未完成 ...
- 软件工程第二次程序的作业:Java计算器实验
1.计算器实验报告 2.https://github.com/lollipopangel/test/tree/master 3.实验截图 7+8 清除 六.总结 通过本次实验让我对JFrame类.JP ...
- Hibernate_core_method
/** * Created by Administrator on 2015/11/30. *HibernateUtil */public class HibernateUtil { private ...
- [福大软工] Z班 第11次成绩排行榜
注:本次成绩排行榜是针对团队Alpha阶段冲刺博客的得分统计 作业要求 http://www.cnblogs.com/easteast/p/7749181.html 评分细则 在团队Alpha阶段刚开 ...
- iOS开发设计多个target
创建target有两种方式, 1>.是通过新建target可以通过File-->New-->Target,然后选择其中一个模板来创建,app类型的target进行创建 2>.另 ...
- Spring事务银行转账示例
https://www.imooc.com/video/9331 声明式事务 @Transactiona() 编程式事务 非模板式(不使用TransactionTemplate) http://cai ...
- eclipse webproject activiti
https://stackoverflow.com/questions/42858723/activiti-eclipse-maven-project-to-dynamic-web-project-a ...
- TFS2018 连接 K8S集群的方法
这一块自己没做测试,与平台樊娟娟沟通后,直接从history命令里面找到的相关命令,感谢原作者以及提供帮助的同事网友.如果有问题后续再改. 1. 在服务里面增加endpoint 见图 创建 连接名称随 ...