原题链接:https://www.luogu.com.cn/problem/P3792

由乃与大母神原型和偶像崇拜

(精简版题面,想看原题面的读者可以点击上方链接)

题目描述

给你一个长为 nnn 的序列 aaa

每次两个操作:

修改 xxx 位置的值为 yyy

查询区间 [l,r][l,r][l,r] 是否可以重排为值域上连续的一段

输入格式

第一行两个数 n,mn,mn,m

第二行 nnn 个数表示 aia_iai​

后面 mmm 行每行三个数 optoptopt xxx yyy,或者optoptopt lll rrr,代表操作

输出格式

如果可以,输出“damushen”

否则输出“yuanxing”

输入输出样例

输入 #1
5 5
1 2 3 4 5
2 1 5
2 2 3
2 3 3
1 3 4
2 3 5
输出 #1
damushen
damushen
damushen
yuanxing

说明/提示

对于 30%30\%30% 的数据,n,m≤500n,m \le 500n,m≤500

对于 60%60\%60% 的数据,n,m≤100000n,m \le 100000n,m≤100000

对于 100%100\%100% 的数据,n,m≤500000n,m \le 500000n,m≤500000

初始值的值域小于 2.5×1072.5\times 10^72.5×107 ,修改操作的 yyy 小于等于 nnn。

2s

题解

先吐槽一下这题面太长了,dark不B。

运用了哈希的思想,对于两串数列,如果最小值、最大值以及平方和都一样,那么这两串数列里的数很可能是一样的。所以我们用线段树维护最小/大值和平方和,询问时通过区间的最小/大值算出如果是连续值域的话平方和是多少,与实际求得的平方和对比即可。

如果只算平方和不放心,还可以有和、立方和等任君挑选,另外,一个好的模数可以让编程工作事半功倍。

不过数据好像挺水,之前骗分写的只能合并已经是连续值域区间的线段树都能A掉前三个点和第十一个hack数据。

代码

这个模数是真滴强

注意因为是取模运算,平方数列和公式中的÷6\div 6÷6不能使用,应该移项变成×6\times 6×6。

#include<bits/stdc++.h>
#define ls v<<1
#define rs v<<1|1
#define sqr(x) 1ll*(x)*(x+1)%mod*(2*(x)+1)%mod
using namespace std;
const int M=5e5+5,mod=19260817;
struct node{int mn,mx,sum;}tree[M<<2];
int n,m,a[M];
node up(node a,node b){return (node){min(a.mn,b.mn),max(a.mx,b.mx),(a.sum+b.sum)%mod};}
void build(int v,int le,int ri)
{if(le==ri){tree[v].mn=tree[v].mx=a[le],tree[v].sum=1ll*a[le]*a[le]%mod;return;}int mid=le+ri>>1;build(ls,le,mid);build(rs,mid+1,ri);tree[v]=up(tree[ls],tree[rs]);
}
void modify(int v,int le,int ri,int x,int val)
{if(le==ri){tree[v].mn=tree[v].mx=val,tree[v].sum=1ll*val*val%mod;return;}int mid=le+ri>>1;if(x<=mid)modify(ls,le,mid,x,val);else modify(rs,mid+1,ri,x,val);tree[v]=up(tree[ls],tree[rs]);
}
node ask(int v,int le,int ri,int ll,int rr)
{if(ll<=le&&ri<=rr)return tree[v];int mid=le+ri>>1;node r=(node){INT_MAX,-INT_MAX,0};if(ll<=mid)r=ask(ls,le,mid,ll,rr);if(mid<rr)r=up(r,ask(rs,mid+1,ri,ll,rr));return r;
}
void in()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;++i)scanf("%d",&a[i]);
}
void ac()
{build(1,1,n);node r;for(int op,a,b;m--;){scanf("%d%d%d",&op,&a,&b);if(op-1){r=ask(1,1,n,a,b);puts(6ll*r.sum%mod==(sqr(r.mx)-sqr(r.mn-1)+mod)%mod?"damushen":"yuanxing");}else modify(1,1,n,a,b);}
}
int main()
{in(),ac();system("pause");
}

Luogu3792 由乃与大母神原型和偶像崇拜相关推荐

  1. AC日记——由乃与大母神原型和偶像崇拜 洛谷 P3792

    由乃与大母神原型和偶像崇拜 思路: 逆元+线段树维护和+线段树维护平方和+线段树维护最大最小值: 代码: #include <bits/stdc++.h>using namespace s ...

  2. luogu P3792 由乃与大母神原型和偶像崇拜

    题面传送门 可以算一道线段树维护hash的模板题了吧. hash要满足两个条件:相同的数hash值一定一样与hash冲突尽量少. 这道题hash序列可以用幂次方来hash 然后用线段树随便维护一下就好 ...

  3. 计算机三级上机场,自学通过计算机二级、三级、四级,保研天津大学,证书拿到手软!你被中航大男神圈粉了吗?...

    原标题:自学通过计算机二级.三级.四级,保研天津大学,证书拿到手软!你被中航大男神圈粉了吗? 他刻苦努力.勤奋踏实,是学习上的巨人:他团结同学.真诚善良,是生活中的强者.他将自己的真心融于生活中,以公 ...

  4. 仿照贪吃蛇大作战的原型做的小游戏

    仿照贪吃蛇大作战的原型做的小游戏,通过摇杆移动小蛇,吃掉食物可以增加身体的长度.有加速功能,还有不太智能的AI电脑. 文件:590m.com/f/25127180-493401547-1ed8d3(访 ...

  5. 阿里大数据神预测 胜率仅5.9%中国却1:0胜韩国

    写在最前面:这是早晨偶然看到的一篇文章,是对昨天中国却1:0胜韩国的评论.有朋友感慨:努力不放弃的时候,全世界都会帮你.这篇内容很全面的串起阿里巴巴在大数据预测方面的动作,角度很别致,分享给大家. 原 ...

  6. 大屏数据可视化源码_AxureBI数据大屏可视化原型设计软件

    产品名称:70套BI数据大屏可视化Axure RP原型设计软件 软件版本: Axure 8,Axure 9(兼容) 作品类型: BI数据大屏可视化Axure原型 文件类型: .rp (可通过 Axur ...

  7. 2019网络小说十大口碑神作盘点,诡秘剑来谍影覆汉牧神学霸皆在

    今天是2019年的最后一天,往前数这一年出现的网络小说,有不少作品还是非常惊艳的,除了有老牌大神的经典之作,也有新崛起的创新之作. 今年好看的小说肯定不止十本,这里先提前说明,这样的盘点带有很强的个人 ...

  8. Axure数据可视化BI大屏看板原型 FUI动态大数据分析后台

    入职新公司半年,经手的两个项目和已经立项的下一个项目都是与数据掘金.数字孪生相关,销售部为银行客户讲解项目时用的是高保真可交互的Axure原型,这就要求我设计出符合演示需求的原型,但由于涉及的可视化图 ...

  9. 原型设计 架构设计_对发明之母进行原型设计

    原型设计 架构设计 In this article, I explore why it's important to prototype. I'll be looking at how the too ...

  10. 鸿蒙之境大司命,神都夜行录鸿蒙之境怎么打 神都夜行录鸿蒙之境通关攻略解析...

    神都夜行录鸿蒙之境每日挑战玩法是大家都很喜欢的玩法,很多小伙伴不知道鸿蒙之境挑战阵容怎么搭配最好?下面小编为大家分享一篇鸿蒙之境挑战副本的打法攻略,一起来看看! 神都夜行录鸿蒙之境挑战玉璧:神都夜行录 ...

最新文章

  1. 用c#实现通讯中自定义发送序列化数据,可一定程度上实现可编程发送的功能
  2. OpenUI5 - SAP开源中的移动大战略
  3. Git入门及上传项目到github中
  4. 谭浩强c语言入门_计算机学生为什么学不会C语言?看到这4点原因,学生表示太真实...
  5. java lampo整车,lampo
  6. Python标准模块--multiprocessing
  7. 精讲了33道二叉树经典题目之后,我总结了这些,帮你一举搞定二叉树
  8. 高并发程序设计入门(转)
  9. delphi教程 | 第一个程序
  10. 河北省高中会考计算机试题及答案,河北省高中信息技术会考题.doc
  11. PHP 开发杂谈:对后端开发的思考
  12. SpringBoot整合Flowable工作流引擎框架
  13. typeof(undefined) == undefined 成立吗?
  14. 整车控制器(VCU)的功能
  15. 【电力电子技术】 THE FLYBACK 电路
  16. 数组<小罗爱c语言>
  17. Swift - 第三方图表库Charts使用详解23(雷达图)
  18. 06C++运算符重载
  19. 000python路--pycharm使用
  20. 细说联想企业网盘背后的安全那些事儿

热门文章

  1. POJ1321-Chess Problem(dfs基础题)
  2. 取整运算⌊a⌋, ⌈a⌉的一些数学理论的总结
  3. git提交过滤target文件 idea_详解如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件...
  4. 探测内网c段、外网某网站(ip)的网络服务存活状态
  5. Lucene PriorityQueue JDK PriorityQueue
  6. zabbix 添加jvm监控
  7. ecshop 实现购物车退出不清空
  8. 存储过程系列三:根据表别名方式distinct去重插入
  9. AMD and CMD are dead之KMDjs内核之依赖分析
  10. VC++ 6.0 快捷键