AC日记——由乃与大母神原型和偶像崇拜 洛谷 P3792
思路:
逆元+线段树维护和+线段树维护平方和+线段树维护最大最小值;
代码:
#include <bits/stdc++.h> using namespace std; #define maxn 500005
#define ll long long
#define llf ll
#define INF 0x7fffffff
#define True_Ans "damushen"
#define False_Ans "yuanxing"
#define mod (1000000009LL)
#define mod_ (833333341LL) struct TreeNodeType {
int l,r,mid,maxval,minval;
ll sumval;
llf sumval2;
};
struct TreeNodeType tree[maxn<<]; int n,m,qmax,qmin; ll qsum; llf qsum2; inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
} inline void in(ll &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
} void tree_build(int now,int l,int r)
{
tree[now].l=l,tree[now].r=r;
if(l==r)
{
in(tree[now].sumval),tree[now].sumval2=(tree[now].sumval*tree[now].sumval)%mod;
tree[now].maxval=tree[now].sumval,tree[now].minval=tree[now].sumval;return;
}
tree[now].mid=l+r>>,tree_build(now<<,l,tree[now].mid),tree_build(now<<|,tree[now].mid+,r);
tree[now].sumval=tree[now<<].sumval+tree[now<<|].sumval;
tree[now].sumval2=(tree[now<<].sumval2+tree[now<<|].sumval2)%mod;
tree[now].maxval=max(tree[now<<].maxval,tree[now<<|].maxval);
tree[now].minval=min(tree[now<<].minval,tree[now<<|].minval);
} void tree_query(int now,int l,int r)
{
if(tree[now].l>=l&&tree[now].r<=r)
{
qmax=max(qmax,tree[now].maxval),qmin=min(qmin,tree[now].minval);
qsum+=tree[now].sumval,qsum2+=tree[now].sumval2;return;
}
if(l<=tree[now].mid) tree_query(now<<,l,min(tree[now].mid,r));
if(r>tree[now].mid) tree_query(now<<|,max(tree[now].mid+,l),r);
} void tree_change(int now,int to,int val_)
{
if(tree[now].l==tree[now].r)
{
tree[now].sumval=val_,tree[now].maxval=val_,tree[now].minval=val_;
tree[now].sumval2=(tree[now].sumval*tree[now].sumval)%mod;return;
}
if(to<=tree[now].mid) tree_change(now<<,to,val_);
else tree_change(now<<|,to,val_);
tree[now].sumval=tree[now<<].sumval+tree[now<<|].sumval;
tree[now].sumval2=(tree[now<<].sumval2+tree[now<<|].sumval2)%mod;
tree[now].maxval=max(tree[now<<].maxval,tree[now<<|].maxval);
tree[now].minval=min(tree[now<<].minval,tree[now<<|].minval);
} llf Sum2(int r)
{
llf R_=r;
return (((((R_*(R_+))%mod)*(R_*+))%mod)*)%mod;
} ll Sum(int l,int r)
{
ll L_=l,s=r-l+;
return L_*s+s*(s-)/;
} int main()
{
in(n),in(m),tree_build(,,n);
llf lfpos;ll llpos;int op,l,r;
for(;m--;)
{
in(op),in(l),in(r);
if(op==) tree_change(,l,r);
else
{
qsum=,qsum2=,qmax=,qmin=INF,tree_query(,l,r);
if(qmax-qmin==r-l)
{
if(qsum==Sum(qmin,qmax))
{
if((qsum2+Sum2(qmin-))%mod==Sum2(qmax)) puts(True_Ans);
else puts(False_Ans);
}
else puts(False_Ans);
}
else puts(False_Ans);
}
}
return ;
}
AC日记——由乃与大母神原型和偶像崇拜 洛谷 P3792的更多相关文章
- 洛谷P3792 由乃与大母神原型和偶像崇拜
P3792 由乃与大母神原型和偶像崇拜 题目背景 由乃最近没事干,去研究轻拍学去了 就是一个叫做flip flappers,轻拍翻转小膜女的番 然后研究的过程中她看到了一个叫做大母神原型的东西 大母神 ...
- LuoguP3792 由乃与大母神原型和偶像崇拜
题目地址 题目链接 题解 由乃题还是毒瘤啊orz 显然的一个结论是,如果保证不重复,维护区间min,max然后判断max-min+1==r-l+1是否成立即可 但是有重复 于是就要orz题解区的各位大 ...
- 【洛谷P3792】由乃与大母神原型和偶像崇拜
题目大意:维护一个序列,支持单点修改和查询一段区间能不能组成连续的一段数. 题解:查询区间能不能组成一段连续的数这个操作较为复杂,很难在较小时间复杂度内直接维护.这里采用线段树维护区间哈希的策略,即: ...
- p3792 由乃与大母神原型和偶像崇拜(思维+线段树)
要求 1.修改x位置的值为y 2.查询区间l,r是否可以重排为值域上连续的一段 可以,很lxl 然后一开始思考合并区间,但是发现可以重排序,GG 然后想了特殊性质,比如求和,但是显然可以被叉 这时候我 ...
- 「Luogu 3792」由乃与大母神原型和偶像崇拜
更好的阅读体验 Portal Portal1: Luogu Description 给你一个序列\(a\) 每次两个操作: 修改\(x\)位置的值为\(y\): 查询区间\([l, r]\)是否可以重 ...
- AC日记——【模板】点分治(聪聪可可) 洛谷 P2634
[模板]点分治(聪聪可可) 思路: 点分治: (感谢灯神) 代码: #include <bits/stdc++.h> using namespace std; #define maxn 2 ...
- 【AC自动机】【树状数组】【dfs序】洛谷 P2414 [NOI2011]阿狸的打字机 题解
这一题是对AC自动机的充分理解和树dfs序的巧妙运用. 题目背景 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机. 题目描述 打字机上只有28个按键,分别印有26个小写英文字母和' ...
- AC日记——codevs1688求逆序对
AC日记--codevs1688求逆序对 锵炬 掭约芴巷 枷锤霍蚣 蟠道初盛 到被他尽情地踩在脚下蹂躏心中就无比的兴奋他是怎么都 ㄥ|囿楣 定要将他剁成肉泥.挫骨扬灰跟随着戴爷这么多年刁梅生 圃鳋 ...
- 洛谷P4014 分配问题【最小/大费用流】题解+AC代码
洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...
随机推荐
- 【SSH】——使用ModelDriven的利与弊
在以往的web开发中,如果要在表单显示什么内容,我们就需要在Action中提前定义好表单显示的所有属性,以及一系列的get和set方法.如果实体类的属性非常多,那么Action中也要定义相同的属性.在 ...
- online community
online community spectrum https://spectrum.chat/xgqfrms https://community.xgqfrms.xyz/ https://spect ...
- c++ STL(2)
Vector: #include "stdafx.h" #include<iostream> #include<vector> #include<al ...
- 【Foreign】无聊的计算姬 [Lucas][BSGS]
无聊的计算姬 Time Limit: 10 Sec Memory Limit: 256 MB Description Input Output Sample Input 6 2 2 3 4 3 2 ...
- HIT 1917 2—SAT
题目大意:一国有n个党派,每个党派在议会中都有2个代表, 现要组建和平委员会,要从每个党派在议会的代表中选出1人,一共n人组成和平委员会. 已知有一些代表之间存在仇恨,也就是说他们不能同时被选为和平委 ...
- swift出师作,史丹佛大学游戏制作案例,计算器,小游戏
这两个案例得好好弄清楚,感觉在任何方面既然能够作为公开课被提到这所名校的课程里面自然有不得不学习的理由,感觉应该去入手一下,毕竟这种课,价格不匪,难以接触,能看到就当再教育了.
- Hadoop安装过程
1.安装JDK apt-get install openjdk-7-jdk 2.配置环境变量 vim /etc/profile 编辑: export JAVA_HOME=/usr/lib/jvm/ja ...
- (十二)进一步掌握STVD/COSMIC
如何分配变量到指定的地址 举例:unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00unsigned char temp_B@0x100; //定 ...
- Python学习笔记 chapter 2基础
程序输入 >>> print('%s is number %d'%('Python', 1))Python is number 1 输出重定向有问题(待定) 文本输入>> ...
- SpringMVC - 个人对@ModelAttribute的见解 和 一些注入参数、返回数据的见解
2016-8-23修正. 因为对modelattribute这个注解不了解,所以在网上搜寻一些答案,感觉还是似懂非懂的,所以便自己测试,同时还结合网上别人的答案:最后得出我自己的见解和结果,不知道正确 ...