正题

题目链接:https://www.luogu.com.cn/problem/CF438D


题目大意

一个序列要求支持

  1. 区间求和
  2. 区间取模
  3. 单点修改

解题思路

对于一个数取模会有结果x%p={x≤⌊x2⌋xx\% p=\{\begin{matrix}x\leq \lfloor\frac{x}{2}\rfloor\\x\end{matrix}x%p={x≤⌊2x​⌋x​

也就是一个数最多会被取模而修改logloglog次,所以我们只要每次查询区间最大值如果≥p\geq p≥p那么就修改最大值即可,这样每个数最多修改logloglog次。

时间复杂度O(nlog⁡2n)O(n\log^2 n)O(nlog2n)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=4e5+10;
ll n,q,w[N],mx[N],z[N];
void PushUp(ll x){w[x]=w[x*2]+w[x*2+1];mx[x]=max(mx[x*2],mx[x*2+1]);if(mx[x]==mx[x*2])z[x]=z[x*2];else z[x]=z[x*2+1];
}
void Change(ll x,ll L,ll R,ll pos,ll val){if(L==R){w[x]=mx[x]=val;z[x]=pos;return;}ll mid=(L+R)>>1;if(pos<=mid)Change(x*2,L,mid,pos,val);else Change(x*2+1,mid+1,R,pos,val);PushUp(x);return;
}
void Mod(ll x,ll L,ll R,ll l,ll r,ll val){if(L==l&&R==r){while(mx[x]>=val)Change(x,L,R,z[x],mx[x]%val);return;}ll mid=(L+R)>>1;if(r<=mid)Mod(x*2,L,mid,l,r,val);else if(l>mid)Mod(x*2+1,mid+1,R,l,r,val);else Mod(x*2,L,mid,l,mid,val),Mod(x*2+1,mid+1,R,mid+1,r,val);PushUp(x);return;
}
ll Ask(ll x,ll L,ll R,ll l,ll r){if(L==l&&R==r)return w[x];ll mid=(L+R)>>1;if(r<=mid)return Ask(x*2,L,mid,l,r);if(l>mid)return Ask(x*2+1,mid+1,R,l,r);return Ask(x*2,L,mid,l,mid)+Ask(x*2+1,mid+1,R,mid+1,r);
}
int main()
{scanf("%lld%lld",&n,&q);for(ll i=1;i<=n;i++){ll x;scanf("%lld",&x);Change(1,1,n,i,x);}while(q--){ll op,l,r,x;scanf("%lld%lld%lld",&op,&l,&r);if(op==1)printf("%lld\n",Ask(1,1,n,l,r));else if(op==2)scanf("%lld",&x),Mod(1,1,n,l,r,x);else Change(1,1,n,l,r);}return 0;
}

CF438D-The Child and Sequence【线段树】相关推荐

  1. codeforces CF438D The Child and Sequence 线段树

    $ \Rightarrow $ 戳我进CF原题 D. The Child and Sequence time limit per test: 4 seconds memory limit per te ...

  2. Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间取摸

    D. The Child and Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...

  3. 2019ICPC(南京) - Greedy Sequence(线段树)

    题目链接:点击查看 题目大意:题意不明(英语渣),网上的简洁版转化: 对于每个i,所在下标p[i],在[p[i]−k,p[i]+k]中找到小于i的最大数x,然后ans[i]=ans[x]+1即可. 题 ...

  4. 【bzoj4355】Play with sequence 线段树区间最值操作

    题目描述 维护一个长度为N的序列a,现在有三种操作: 1)给出参数U,V,C,将a[U],a[U+1],...,a[V-1],a[V]都赋值为C. 2)给出参数U,V,C,对于区间[U,V]里的每个数 ...

  5. 【 bzoj 4355 】 Play with sequence - 线段树乱搞

    先讲个故事... 据说某一天,claris扔了一道题到某群里面然后引起了不大的讨论~然后好学向上的whx同学发现了这题...聪明的whx想了很久...然后!whx发现看不懂claris给的暴力的证明. ...

  6. UESTC-1546___Bracket Sequence —— 线段树 + 括号序列

    题目链接:点我啊╭(╯^╰)╮ 题目大意: 给出一个括号序列      setsetset -- 将给定区间全部转化为指定括号      reversereversereverse -- 将给定区间的 ...

  7. 【BZOJ4355】Play with sequence 线段树

    [BZOJ4355]Play with sequence Description 维护一个长度为N的序列a,现在有三种操作: 1)给出参数U,V,C,将a[U],a[U+1],...,a[V-1],a ...

  8. HDU 5828 Rikka with Sequence (线段树+剪枝优化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5828 给你n个数,三种操作.操作1是将l到r之间的数都加上x:操作2是将l到r之间的数都开方:操作3是 ...

  9. Gorgeous Sequence线段树区间跟新

    http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1018&ojid=0&cid=12578&hide= ...

  10. HDU4893 Wow! Such Sequence! 线段树

    题意:给你一个序列,其中有三种操作 1)位置为K 的数+ D 2)求 l-r 区间和 3)把 l-r 区间里面的所有数都变为理它最近的斐波纳契数 解题思路:这个题的区间更新其实可以在单点更新的时候就得 ...

最新文章

  1. (超贴心)Centos7安装2.5G网卡驱动(Realtek 3000)
  2. java 中文问号问题_解决java中的中文乱码问题(ZT)
  3. 用python画皮卡丘源代码-实现童年宝可梦,教你用Python画一只属于自己的皮卡丘...
  4. 001_公司网站首页遇到的问题
  5. 模型学习 - SVM
  6. 数据链路层:ARP协议详解(绝对经典)
  7. WebKit 内核浏览器 initKeyboardEvent 函数原型
  8. python3.9性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型
  9. ITU-R BT.656 , 帧 , 场 === 模拟视频信号采集的处理,以及奇偶场
  10. 计算机三级网络技术无纸化考试模拟软件(2019.3 2019.9) 包含激活码 未来教育
  11. 解决cmd中tomcat中文乱码问题
  12. Webgl(ThreeJS)空间测量\测距功能(附工程文件)
  13. Glide 加载webp动图实战(解决图片每帧间隔过长,动图单次播放,二次播放动图时首帧是动图最后一帧的问题)
  14. HTML5微案例讲解系列视频课程-杨千锋-专题视频课程
  15. Java计算机毕业设计糖果销售管理系统源码+系统+数据库+lw文档
  16. 9.3.2另一种计算机器2
  17. 取消Chrome表单文本框自动填充黄色背景色样式
  18. TIA博途S7-1200学习笔记——指令集
  19. 闹剧还是情有可原?联想撤回科创板上市申请后,股价大跌13%
  20. Unity入门——实现一个简单的跑酷游戏(资源预制)

热门文章

  1. mysql视图实现的_mysql视图是什么?怎么实现?
  2. 攻城时服务器维护,8月31日服务器维护更新公告
  3. html 页面工具,html页面工具-htmlUnit
  4. 5120v2怎么配置web登陆_阿里企业邮箱如何配置和添加到第三个电子邮件客户端中?...
  5. linux 全双工 wifi热点,Linux中的同时套接字读/写(“全双工”)(特别是aio)
  6. linux脚本传参修改配置文件,shell脚本修改配置文件指定行的值
  7. java实用教程——组件及事件处理——ActionEvent事件
  8. mysql权限create细化_mysql权限精细化分配-阿里云开发者社区
  9. 浅谈前端路由原理hash和history
  10. linux多行变一列,多行转为一列