博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5475(线段树)
阅读量:7113 次
发布时间:2019-06-28

本文共 1464 字,大约阅读时间需要 4 分钟。

题意:

两个操作:① 当为1时 ,乘上后面的数

                  ② 当为2时,除以第x次乘的数

还说了2操作后面的n不会重复(就这明显看出线段树- -,然而并没有看出来,还是靠的队友)

1则对每个节点赋值,2则将相应的点改为一,每次操作后进行一次询问

#include 
#define MAXN 100010using 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;}

  

转载于:https://www.cnblogs.com/Przz/p/5409748.html

你可能感兴趣的文章
mybatis-generator自动生成dao,mapping,model
查看>>
阿里云服务器的坑=====部署EF+MVC
查看>>
docker学习笔记17:Dockerfile 指令 ONBUILD介绍
查看>>
MVC5 网站开发之七 用户功能 1、角色的后台管理
查看>>
To Miss Our Children Time(dp)
查看>>
VisualSVN Server和Subversion的联系
查看>>
Gossip算法
查看>>
单调栈小结
查看>>
将Tp-link无线路由器桥接到Dlink无线路由器上
查看>>
Div和Span标签显示与隐藏
查看>>
highcharts 结合phantomjs纯后台生成图片
查看>>
Eclipse上GIT插件EGIT使用手册之十二_重置功能
查看>>
error: ‘for’ loop initial declarations are only allowed in C99 mode
查看>>
MySQL和Oracle开发差异
查看>>
DevExpress的安装方法与破解教程【转】
查看>>
判断浏览器类型的脚本
查看>>
手机市场硝烟弥漫,心系天下三星W2017价格上扬仍一机难求
查看>>
蔚来汽车更新招股书:IPO后李斌将拥有48%投票权
查看>>
快手成央视春晚官方合作伙伴 助力春晚传播
查看>>
春运服务“铁骑”返乡8年女交警:寒风中随车返乡孩子少了
查看>>