hdu 5475(线段树)
题意:
两个操作:① 当为1时 ,乘上后面的数
② 当为2时,除以第x次乘的数
还说了2操作后面的n不会重复(就这明显看出线段树- -,然而并没有看出来,还是靠的队友)
1则对每个节点赋值,2则将相应的点改为一,每次操作后进行一次询问
#include <cstdio>
#define MAXN 100010
using namespace std; long long m,ans[MAXN],q[MAXN],tree[MAXN*50];
int n;
long long build(int l,int r,int rt)
{
if(l==r) return(tree[rt]=q[l]>1?q[l]:1);
int mid=(l+r)/2;
return tree[rt]=(build(l,mid,rt*2)*build(mid+1,r,rt*2+1))%m;
}
long long change(int l,int r,int rt,int x)
{
if(l==r)return tree[rt]=1;
int mid=(l+r)/2;
if(x<=mid)return tree[rt]=(change(l,mid,rt*2,x)*tree[rt*2+1])%m;
else return tree[rt]=(tree[rt*2]*change(mid+1,r,rt*2+1,x))%m;
}
long long query(int l,int r,int rt,int x)
{
if(r==x)return tree[rt];
int mid=(l+r)/2;
if(x>mid)return (tree[rt*2]*query(mid+1,r,rt*2+1,x))%m;
else return query(l,mid,rt*2,x);
}
int main()
{
int T;
scanf("%d",&T);
for(int t=1; t<=T; ++t)
{
scanf("%d%lld",&n,&m);
int op;
ans[0]=1;
for(int i=1; i<=n; i++)
{
ans[i]=1;
scanf("%d%lld",&op,&q[i]);
q[i]%=m;if(op==2)q[i]=-q[i];
}
build(1,n,1);
printf("Case #%d:\n",t);
for(int i=1; i<=n; i++)
{
if(q[i]>=0)ans[i]=(ans[i-1]*q[i])%m;
else
{
change(1,n,1,-q[i]);
ans[i]=query(1,n,1,i);
}
printf("%lld\n",ans[i]);
}
}
return 0;
}
hdu 5475(线段树)的更多相关文章
- hdu 5475 线段树
An easy problem Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)
Weak Pair Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- hdu 3974 线段树 将树弄到区间上
Assign the task Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 3436 线段树 一顿操作
Queue-jumpers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- hdu 3397 线段树双标记
Sequence operation Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 4578 线段树(标记处理)
Transformation Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others) ...
- hdu 4533 线段树(问题转化+)
威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
- hdu 2871 线段树(各种操作)
Memory Control Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu 4052 线段树扫描线、奇特处理
Adding New Machine Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 1542 线段树扫描(面积)
Atlantis Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
随机推荐
- 浏览器关闭后,Session会话结束了么?
今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了? 我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保 存当前用户的状态信息 ...
- CNN中的padding
在使用TF搭建CNN的过程中,卷积的操作如下 convolution = tf.nn.conv2d(X, filters, strides=[1,2,2,1], padding="SAME& ...
- 【译】Gradle 的依赖关系处理不当,可能导致你编译异常
文章 | Ashesh Bharadwaj 翻译 | 承香墨影 授权 承香墨影 翻译.编辑并发布 在 Android Studio 中,Gradle 构建过程对于开发者来说,很大程度上是抽象的.作为一 ...
- 关于 Bootstrap的知识
Bootstrap是简单.灵活的用于搭建WEB页面的HTML.CSS.Javascript的工具集.Bootstrap基于HTML5和CSS3,具有漂亮的设计.友好的学习曲线.卓越的兼容性,还有12列 ...
- EasyUi中对话框。
html页面代码: <head id="Head1" runat="server"> <meta http-equiv="Conte ...
- MySQL binlog 日志
一:MySQL 日志的三种类型: statement.row.mix 格式.推荐使用row格式. 怎么设置自己的日志格式呢? 1. set globle binlog_format='MIXED' 2 ...
- python pickle 模块的使用
用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 json提供四个功能:dumps,dump,l ...
- istio入门(03)istio的helloworld-场景说明
一.原生应用 四个微服务: python微服务:一个deployment(deployment含有一个pod,pod内含有一个容器) java微服务:三个deployment(deployment含有 ...
- Spring知识点回顾(06)Profile 和 条件注解 @Conditional
1.设定环境中的active profiles 如:DispatcherServerlet的init-param spring.profiles.active=production spring.pr ...
- 开源软件:NoSql数据库 - 图数据库 Neo4j
转载自原文地址:http://www.cnblogs.com/loveis715/p/5277051.html 最近我在用图形数据库来完成对一个初创项目的支持.在使用过程中觉得这种图形数据库实际上挺有 ...