要求

1.修改x位置的值为y

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

可以,很lxl

然后一开始思考合并区间,但是发现可以重排序,GG

然后想了特殊性质,比如求和,但是显然可以被叉

这时候我觉得要把每个数都尽量特殊化,让不同数字差异化之后和尽量不同,考虑维护一个立方和

求1到n的立方和有这样的公式

\({( \frac{n*(n+1)}{2}) }^2\)

然后就维护立方和,为了防止爆long long取模

注意

  • 除2要乘2的逆元
  • 维护sum要取模

    然后没了
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int MOD = 1e9+7;
long long sum[500100<<2],minx[500100<<2],maxx[500100<<2],a[500100],n,m;
struct ansNode{
long long s,MIN,MAX;
};
void pushup(int o){
sum[o]=(sum[o<<1]+sum[o<<1|1])%MOD;
minx[o]=min(minx[o<<1],minx[o<<1|1]);
maxx[o]=max(maxx[o<<1],maxx[o<<1|1]);
}
void build(int l,int r,int o){
if(l==r){
maxx[o]=a[l];
minx[o]=a[l];
sum[o]=a[l]%MOD*a[l]%MOD*a[l]%MOD;
return;
}
int mid=(l+r)>>1;
build(l,mid,o<<1);
build(mid+1,r,o<<1|1);
pushup(o);
}
void set(int L,int R,int o,int pos,int c){
if(L==R){
maxx[o]=c;
minx[o]=c;
sum[o]=c%MOD*c%MOD*c%MOD;
return;
}
int mid=(L+R)>>1;
if(pos<=mid)
set(L,mid,o<<1,pos,c);
else
set(mid+1,R,o<<1|1,pos,c);
pushup(o);
}
ansNode query(int L,int R,int l,int r,int o){//first sum second min
if(L<=l&&r<=R){
return (ansNode){sum[o],minx[o],maxx[o]};
}
int mid=(l+r)>>1;
ansNode ans;
ans.s=0;
ans.MIN=1e9;
ans.MAX=0;
if(L<=mid){
ansNode midx;
midx=query(L,R,l,mid,o<<1);
ans.s=(ans.s+midx.s)%MOD;
ans.MIN=min(ans.MIN,midx.MIN);
ans.MAX=max(ans.MAX,midx.MAX);
}
if(R>mid){
ansNode midx;
midx=query(L,R,mid+1,r,o<<1|1);
ans.s=(ans.s+midx.s)%MOD;
ans.MIN=min(ans.MIN,midx.MIN);
ans.MAX=max(ans.MAX,midx.MAX);
}
return ans;
}
long long sig(long long n){
return ((n*(n+1)%MOD*500000004%MOD)%MOD)*((n*(n+1)%MOD*500000004%MOD)%MOD)%MOD;
}
bool isright(int L,int R){
ansNode p=query(L,R,1,n,1);
return (((sig(p.MAX)-sig(p.MIN-1))%MOD+MOD)%MOD==p.s);
}
int main(){
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
build(1,n,1);
for(int i=1;i<=m;i++){
int opt,x,y;
scanf("%d %d %d",&opt,&x,&y);
if(opt==1)
set(1,n,1,x,y);
else
printf("%s\n",(isright(x,y))?"damushen":"yuanxing");
}
return 0;
}

p3792 由乃与大母神原型和偶像崇拜(思维+线段树)的更多相关文章

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

    P3792 由乃与大母神原型和偶像崇拜 题目背景 由乃最近没事干,去研究轻拍学去了 就是一个叫做flip flappers,轻拍翻转小膜女的番 然后研究的过程中她看到了一个叫做大母神原型的东西 大母神 ...

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

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

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

    题目地址 题目链接 题解 由乃题还是毒瘤啊orz 显然的一个结论是,如果保证不重复,维护区间min,max然后判断max-min+1==r-l+1是否成立即可 但是有重复 于是就要orz题解区的各位大 ...

  4. 【洛谷P3792】由乃与大母神原型和偶像崇拜

    题目大意:维护一个序列,支持单点修改和查询一段区间能不能组成连续的一段数. 题解:查询区间能不能组成一段连续的数这个操作较为复杂,很难在较小时间复杂度内直接维护.这里采用线段树维护区间哈希的策略,即: ...

  5. 「Luogu 3792」由乃与大母神原型和偶像崇拜

    更好的阅读体验 Portal Portal1: Luogu Description 给你一个序列\(a\) 每次两个操作: 修改\(x\)位置的值为\(y\): 查询区间\([l, r]\)是否可以重 ...

  6. bzoj 1171 大sz的游戏& 2892 强袭作战 (线段树+单调队列+永久性flag)

    大sz的游戏 Time Limit: 50 Sec  Memory Limit: 357 MBSubmit: 536  Solved: 143[Submit][Status][Discuss] Des ...

  7. 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP

    2892: 强袭作战 Time Limit: 50 Sec  Memory Limit: 512 MBSubmit: 45  Solved: 30[Submit][Status][Discuss] D ...

  8. 线段树总结 (转载 里面有扫描线类 还有NotOnlySuccess线段树大神的地址)

    转载自:http://blog.csdn.net/shiqi_614/article/details/8228102 之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnl ...

  9. BUAA 724 晴天小猪的神题(RMQ线段树)

    BUAA 724 晴天小猪的神题 题意:中文题,略 题目链接:http://acm.buaa.edu.cn/problem/724/ 思路:对于询问x,y是否在同一区间,可以转换成有没有存在一个区间它 ...

随机推荐

  1. FTL 数字有逗号

    Long i=100000000l; Map model=new Map(); model.put("t",i); 在freemarker中显示为100,000,000 想按原样输 ...

  2. hive的find_in_set函数

    集合查找函数: find_in_set语法: find_in_set(string str, string strList) 返回值: int说明: 返回str在strlist第一次出现的位置,str ...

  3. (Review cs231n)loss function and optimization

    分类器需要在识别物体变化时候具有很好的鲁棒性(robus) 线性分类器(linear classifier)理解为模板的匹配,根据数量,表达能力不足,泛化性低:理解为将图片看做在高维度区域 线性分类器 ...

  4. c# 静态方法和数据

    c#所有方法都必须在类的内部声明,但如果把方法或者字段声明为static就可以使用,类名代用方法或者访问字段. 在方法中声明一个静态变量a 和一个静态的aFun方法.下面是在主函数中调用. 从上图可以 ...

  5. redux 数据规律

    counter increase info  todos 为 reducers 文件名 export default combineReducers({ todos, visibilityFilter ...

  6. 一篇关于蓝牙SDP和L2CAP协议的文章

    SDP地址:http://www.cnblogs.com/strive-forever/archive/2011/11/04/2236640.html L2CAP地址:http://www.cnblo ...

  7. POJ 1018 Communication System (动态规划)

    We have received an order from Pizoor Communications Inc. for a special communication system. The sy ...

  8. 安装DotNetCore.1.0.0-VS2015Tools.Preview2一直失败,如何解?

    首先要说明的一点是,本地的VS2015的环境已经安装完成,而且vs2015.3也已经更新完成了,这个环境应该是没啥问题.但是安装.DotNetCore.1.0.0-VS2015Tools.Previe ...

  9. 前端框架VUE----babel

    这个是解析我们es6的代码的,为什么要用它呢,因为对于一些ie浏览器,甚至FF浏览器,低版本的还不能识别我们的es6代码,那么vue里面好多还让我们去写es6的代码,这个时候我们就可以用babel这个 ...

  10. ubuntu重启+sublime快捷键

    sudo reboot Sublime常用快捷键: 掌握基本的代码编辑器的快捷键,能让你打码更有效率,刚开始可能不大记得住,多敲几次就能熟悉并使用它 精华键 : Ctrl+Shift+P:打开命令面板 ...