思路:
逆元+线段树维护和+线段树维护平方和+线段树维护最大最小值;
代码:
#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 个人做的 ...
随机推荐
-
前端学HTTP之报文起始行
前面的话 如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹了.HTTP报文是在HTTP应用程序之间发送的简单的格式化数据块,每条报文都包含一条来自客户端的请求,或者一条来自服务器的 ...
-
AVFoundation播放视频时显示字幕,切换音轨
主要用到两个类:AVMediaSelectionGroup 和 AVMediaSelectionOption 调用 AVAsset对象的availableMediaCharacteristicsWit ...
-
BeanDefinition的Resource定位——3
1.我们重点看看AbstractRefreshableApplicationContext的refreshBeanFactory方法的实现,这个refreshBeanFactory被FileSyste ...
-
JPA 系列教程3-单向多对一
JPA中的@ManyToOne 主要属性 - name(必需): 设定"many"方所包含的"one"方所对应的持久化类的属性名 - column(可选): 设 ...
-
Mysql的二进制安装和基础入门操作
前言:Mysql数据库,知识非常的多,要想学精学通这块知识,估计也要花费和学linux一样的精力和时间.小编也是只会些毛皮,给大家分享一下~ 一.MySQL安装 (1)安装方式: 1 .程序包yum安 ...
-
dbms_redefinition在线重定义表结构
dbms_redefinition在线重定义表结构 (2013-08-29 22:52:58) 转载▼ 标签: dbms_redefinition 非分区表转换成分区表 王显伟 在线重定义表结构 在线 ...
-
使用WPF Animated GIF实现GIF图片的播放
这个类库很方便,也很简单:http://wpfanimatedgif.codeplex.com/ 参考博客:http://blog.csdn.net/gqqnb/article/details/721 ...
-
LeetCode-300.Longst Increasing Subsequence
Given an unsorted array of integers, find the length of longest increasing subsequence. Example: Inp ...
-
【存在问题,待修改】SSH 远程登陆
0. 前提 设置 hosts 参考链接 Linux 配置 hosts SSH公钥登录原理 1. SSH 是什么 SSH ( Secure Shell ) 是一种协议标准,其目的是实现安全远程登录以及其 ...
-
delphi 事务处理SQL语句
方法一(利用adoconnection.exe(sqlstate)): adoconnection1.begintrans;//开始事务try adoconnection1.execute(sqlst ...