Luogu3792 由乃与大母神原型和偶像崇拜
原题链接: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 由乃与大母神原型和偶像崇拜相关推荐
- AC日记——由乃与大母神原型和偶像崇拜 洛谷 P3792
由乃与大母神原型和偶像崇拜 思路: 逆元+线段树维护和+线段树维护平方和+线段树维护最大最小值: 代码: #include <bits/stdc++.h>using namespace s ...
- luogu P3792 由乃与大母神原型和偶像崇拜
题面传送门 可以算一道线段树维护hash的模板题了吧. hash要满足两个条件:相同的数hash值一定一样与hash冲突尽量少. 这道题hash序列可以用幂次方来hash 然后用线段树随便维护一下就好 ...
- 计算机三级上机场,自学通过计算机二级、三级、四级,保研天津大学,证书拿到手软!你被中航大男神圈粉了吗?...
原标题:自学通过计算机二级.三级.四级,保研天津大学,证书拿到手软!你被中航大男神圈粉了吗? 他刻苦努力.勤奋踏实,是学习上的巨人:他团结同学.真诚善良,是生活中的强者.他将自己的真心融于生活中,以公 ...
- 仿照贪吃蛇大作战的原型做的小游戏
仿照贪吃蛇大作战的原型做的小游戏,通过摇杆移动小蛇,吃掉食物可以增加身体的长度.有加速功能,还有不太智能的AI电脑. 文件:590m.com/f/25127180-493401547-1ed8d3(访 ...
- 阿里大数据神预测 胜率仅5.9%中国却1:0胜韩国
写在最前面:这是早晨偶然看到的一篇文章,是对昨天中国却1:0胜韩国的评论.有朋友感慨:努力不放弃的时候,全世界都会帮你.这篇内容很全面的串起阿里巴巴在大数据预测方面的动作,角度很别致,分享给大家. 原 ...
- 大屏数据可视化源码_AxureBI数据大屏可视化原型设计软件
产品名称:70套BI数据大屏可视化Axure RP原型设计软件 软件版本: Axure 8,Axure 9(兼容) 作品类型: BI数据大屏可视化Axure原型 文件类型: .rp (可通过 Axur ...
- 2019网络小说十大口碑神作盘点,诡秘剑来谍影覆汉牧神学霸皆在
今天是2019年的最后一天,往前数这一年出现的网络小说,有不少作品还是非常惊艳的,除了有老牌大神的经典之作,也有新崛起的创新之作. 今年好看的小说肯定不止十本,这里先提前说明,这样的盘点带有很强的个人 ...
- Axure数据可视化BI大屏看板原型 FUI动态大数据分析后台
入职新公司半年,经手的两个项目和已经立项的下一个项目都是与数据掘金.数字孪生相关,销售部为银行客户讲解项目时用的是高保真可交互的Axure原型,这就要求我设计出符合演示需求的原型,但由于涉及的可视化图 ...
- 原型设计 架构设计_对发明之母进行原型设计
原型设计 架构设计 In this article, I explore why it's important to prototype. I'll be looking at how the too ...
- 鸿蒙之境大司命,神都夜行录鸿蒙之境怎么打 神都夜行录鸿蒙之境通关攻略解析...
神都夜行录鸿蒙之境每日挑战玩法是大家都很喜欢的玩法,很多小伙伴不知道鸿蒙之境挑战阵容怎么搭配最好?下面小编为大家分享一篇鸿蒙之境挑战副本的打法攻略,一起来看看! 神都夜行录鸿蒙之境挑战玉璧:神都夜行录 ...
最新文章
- 用c#实现通讯中自定义发送序列化数据,可一定程度上实现可编程发送的功能
- OpenUI5 - SAP开源中的移动大战略
- Git入门及上传项目到github中
- 谭浩强c语言入门_计算机学生为什么学不会C语言?看到这4点原因,学生表示太真实...
- java lampo整车,lampo
- Python标准模块--multiprocessing
- 精讲了33道二叉树经典题目之后,我总结了这些,帮你一举搞定二叉树
- 高并发程序设计入门(转)
- delphi教程 | 第一个程序
- 河北省高中会考计算机试题及答案,河北省高中信息技术会考题.doc
- PHP 开发杂谈:对后端开发的思考
- SpringBoot整合Flowable工作流引擎框架
- typeof(undefined) == undefined 成立吗?
- 整车控制器(VCU)的功能
- 【电力电子技术】 THE FLYBACK 电路
- 数组<小罗爱c语言>
- Swift - 第三方图表库Charts使用详解23(雷达图)
- 06C++运算符重载
- 000python路--pycharm使用
- 细说联想企业网盘背后的安全那些事儿
热门文章
- POJ1321-Chess Problem(dfs基础题)
- 取整运算⌊a⌋, ⌈a⌉的一些数学理论的总结
- git提交过滤target文件 idea_详解如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件...
- 探测内网c段、外网某网站(ip)的网络服务存活状态
- Lucene PriorityQueue JDK PriorityQueue
- zabbix 添加jvm监控
- ecshop 实现购物车退出不清空
- 存储过程系列三:根据表别名方式distinct去重插入
- AMD and CMD are dead之KMDjs内核之依赖分析
- VC++ 6.0 快捷键