洛谷P3792 由乃与大母神原型和偶像崇拜
P3792 由乃与大母神原型和偶像崇拜
题目背景
由乃最近没事干,去研究轻拍学去了
就是一个叫做flip flappers,轻拍翻转小膜女的番
然后研究的过程中她看到了一个叫做大母神原型的东西
大母神不仅是部落保护神,而且是部落间互相识别的标记(以后泛化为不同的图形符号、服饰和祭祀仪式),在部落联盟出现后,具有领导力的部落神祇,上升为整个联盟的共神,进而成为酋邦和王国的共神
大概就是说这个东西是母系社会时候的偶像,然后象征着母亲可以创造生命也可以毁灭生命什么什么的,分别是善母与恶母,既孕育一切,又吞噬一切
然后我们熟知的神话里面就有大母神,比如女娲其实就是个大母神。。。
原始部落时期的大母神既具有生育和哺乳的能力,也具有保护部落、带来丰收的神力。
到了神话时期,大母神进一步分化,演变出形形色色的女神,分别象征了女性能量的不同面向:孕育女神、大地女神、爱与美女神、保护女神、战争女神、丰收女神、智慧女神、命运女神……
这些是善母
世间的事物总是两面性的:一切生命诞生于土地,最终要回归土地;创造的必然也拥有毁灭的能力。大母神也同样具有痛苦、恐怖、吞噬和危险的一面。
比如童话故事里面的女巫,其实就是大母神的另一面的体现,也就是恶母
糖果屋的故事讲的就是韩赛尔和格雷特被继母赶出家里,因为没饭吃了,然后进了森林发现了一个糖果屋,里面有个女巫,专门吃小孩子
然而如果我们仔细想想这个故事,会发现它没有那么简单
比如说,女巫真的是吃小孩子吗?如果女巫是个善良的老婆婆,无偿救助在森林里面困住的小孩子呢?
还有就是当韩赛尔和格雷特杀死了女巫,回到家中发现她们的继母也死了
这是否意味着她们实际上杀死的是她们的继母?
所以这个故事本质上讲的是她们杀了她们的母亲,也就是打败了大母神
很多神话故事里面都有打败大母神的情节
题目描述
你看到这里也许已经觉得由乃精神不正常了
然而由乃自从不小心##了自己的##后早就不正常了
由乃研究了很久大母神原型,但是仍然一脸懵逼
于是就出数据结构题骗钱去了
由乃:给你一个序列,每次询问一个区间是否是值域连续段
zzy:你把题意说详细点
由乃:就是说不能有重复数字,比如1 2 2 3就不行,然后4 2 3 1就可以
yql:sb分块
ddd:sb bitset
由乃:woc你们好树链啊,我。。我带修
zzq:#######sb题
由乃:我就是要出原题
给你一个序列a
每次两个操作:
1.修改x位置的值为y
2.查询区间l,r是否可以重排为值域上连续的一段
输入输出格式
输入格式:
第一行两个数n,m
第二行n个数表示a[i]
后面m行每行三个数opt x y,或者opt l r,代表操作
输出格式:
如果可以,输出“damushen”
否则输出“yuanxing”
输入输出样例
5 5
1 2 3 4 5
2 1 5
2 2 3
2 3 3
1 3 6
2 3 5
damushen
damushen
damushen
damushen
说明
对于30%的数据,n,m<=500
对于60%的数据,n,m<=100000
对于100%的数据,n,m<=500000
值域1e9
2s
#include<iostream>
#include<cstdio>
#include<map>
#include<algorithm>
#define maxn 500001
using namespace std;
int a[maxn],n,m,l,r,b[maxn],cnt;
int op,x,y;
bool flag;
map<int,bool>vis;
int main(){
freopen("Cola.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=m;i++){
scanf("%d%d%d",&op,&x,&y);
if(op==)a[x]=y;
if(op==){
flag=;
cnt=;
for(int j=x;j<=y;j++)b[++cnt]=a[j];
sort(b+,b+cnt+);
for(int j=,num=b[];j<=cnt;j++,num++){
if(b[j]!=num){
flag=;
puts("yuanxing");
break;
}
}
if(flag==)puts("damushen");
continue;
}
}
}
70分 暴力
#include<bits/stdc++.h>
const int yql=;
const int N=;
const int inf=0x7fffffff;
using namespace std;
typedef long long ll;
int n,m,a[N],mx,mn,x,y,inv;
ll ss,sum;
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
inline int fpow(int x,int p){
int ans=;
for(;p;p>>=,x=(1LL*x*x)%yql)if(p&)ans=(1LL*ans*x)%yql;
return ans;
}
inline int calc(int x){return 1LL*x*(x+)%yql*(x<<|)%yql*inv%yql;}
struct Segment_Tree{
#define lson (o<<1)
#define rson (o<<1|1)
int maxv[N<<],minv[N<<];
ll sumv[N<<],s[N<<];
inline void pushup(int o){
maxv[o]=max(maxv[lson],maxv[rson]);
minv[o]=min(minv[lson],minv[rson]);
sumv[o]=(sumv[lson]+sumv[rson])%yql;
s[o]=s[lson]+s[rson];
}
inline void build(int o,int l,int r){
if(l==r){maxv[o]=minv[o]=s[o]=a[l];sumv[o]=(1LL*a[l]*a[l])%yql;return;}
int mid=(l+r)>>;
build(lson,l,mid);build(rson,mid+,r);
pushup(o);
}
inline void change(int o,int l,int r,int q,int v){
if(l==r){maxv[o]=minv[o]=s[o]=v;sumv[o]=(1LL*v*v)%yql;return;}
int mid=(l+r)>>;
if(q<=mid)change(lson,l,mid,q,v);
else change(rson,mid+,r,q,v);
pushup(o);
}
inline void query(int o,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr){
mx=max(maxv[o],mx);mn=min(mn,minv[o]);sum=(sum+sumv[o])%yql;ss+=s[o];
return;
}
int mid=(l+r)>>;
if(ql<=mid)query(lson,l,mid,ql,qr);
if(qr>mid)query(rson,mid+,r,ql,qr);
}
}T;
int main(){
n=read();m=read();inv=fpow(,yql-);
for(int i=;i<=n;i++)a[i]=read();
T.build(,,n);
while(m--){
int opt=read(),l=read(),r=read();
if(opt==)T.change(,,n,l,r);
else{
mx=;mn=inf;ss=;sum=;
T.query(,,n,l,r);
if(mx-mn==r-l&&(1LL*(mx+mn)*(r-l+))>>==ss&&(calc(mx)-calc(mn-)+yql)%yql==sum)puts("damushen");
else puts("yuanxing");
}
}
}
100分 线段树
洛谷P3792 由乃与大母神原型和偶像崇拜的更多相关文章
- p3792 由乃与大母神原型和偶像崇拜(思维+线段树)
要求 1.修改x位置的值为y 2.查询区间l,r是否可以重排为值域上连续的一段 可以,很lxl 然后一开始思考合并区间,但是发现可以重排序,GG 然后想了特殊性质,比如求和,但是显然可以被叉 这时候我 ...
- AC日记——由乃与大母神原型和偶像崇拜 洛谷 P3792
由乃与大母神原型和偶像崇拜 思路: 逆元+线段树维护和+线段树维护平方和+线段树维护最大最小值: 代码: #include <bits/stdc++.h> using namespace ...
- 【洛谷P3792】由乃与大母神原型和偶像崇拜
题目大意:维护一个序列,支持单点修改和查询一段区间能不能组成连续的一段数. 题解:查询区间能不能组成一段连续的数这个操作较为复杂,很难在较小时间复杂度内直接维护.这里采用线段树维护区间哈希的策略,即: ...
- LuoguP3792 由乃与大母神原型和偶像崇拜
题目地址 题目链接 题解 由乃题还是毒瘤啊orz 显然的一个结论是,如果保证不重复,维护区间min,max然后判断max-min+1==r-l+1是否成立即可 但是有重复 于是就要orz题解区的各位大 ...
- 「Luogu 3792」由乃与大母神原型和偶像崇拜
更好的阅读体验 Portal Portal1: Luogu Description 给你一个序列\(a\) 每次两个操作: 修改\(x\)位置的值为\(y\): 查询区间\([l, r]\)是否可以重 ...
- 洛谷P4014 分配问题【最小/大费用流】题解+AC代码
洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...
- 洛谷——P1966 火柴排队&&P1774 最接近神的人_NOI导刊2010提高(02)
P1966 火柴排队 这题贪心显然,即将两序列中第k大的数的位置保持一致,证明略: 树状数组求逆序对啦 浅谈树状数组求逆序对及离散化的几种方式及应用 方法:从前向后每次将数插入到bit(树状数组)中, ...
- 洛谷 P1373 小a和uim之大逃离
2016-05-30 12:31:59 题目链接: P1373 小a和uim之大逃离 题目大意: 一个N*M的带权矩阵,以任意起点开始向右或者向下走,使得奇数步所得权值和与偶数步所得权值和关于K的余数 ...
- 洛谷1373 小a和uim之大逃离
洛谷1373 小a和uim之大逃离 本题地址:http://www.luogu.org/problem/show?pid=1373 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北 ...
随机推荐
- spring自动扫描装配bean
applicationContext.xml: <!-- 自动扫描service包,根据包中注解自动装配bean --> <context:component-scan base-p ...
- 从信用卡欺诈模型看不平衡数据分类(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,IF为主
总结:不平衡数据的分类,(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制.过采样后模型选择RF.xgboost.神经网络能够取得非常不错的效果.(2)模型层面:使用模型 ...
- IDEA-Eclipse结构项目转移到 Idea教程
1.确定Idea的svn配置 2.从svn导出项目 3.检出项目完成,开始设置 4.配置完成,设置svn忽略文件,忽略掉idea配置文件等 5. 设置完毕
- [原]NYOJ-数的位数-69
大学生程序代写 /* NYOJ69 阶乘数位长度 http://acm.nyist.net/JudgeOnline/problem.php?pid=69 数的长度 时间限制:3000 ms | ...
- Linux环境下,开启tomcat时报transport error 202: bind failed: 地址已在使用
转载自:http://blog.csdn.net/mooncom/article/details/61913813 问题描述:今天我在Linux环境下配置tomcat,在tomcat/conf下的se ...
- form+iframe实现ajax文件上传
在做文件上传时除了传入文件外,还有附件参数,并且要求不刷新页面,之前是表单提交的方式,现在修改成ajax上传的方式,由于没有选择用插件,所以用form+iframe的方式,并且这种方式对IE8以上及主 ...
- C++STL库中map容器常用应用
#include<iostream> #include<cstdio> #include<map> //按键值大小构成二叉搜索树 using namespace s ...
- 【转】 Pro Android学习笔记(五八):Preferences(2):CheckBoxPreference
目录(?)[-] CheckBox Preference xml文件 设备的存贮文件 复合preference 在ListPreference的例子中显示的是单选,如果是多选,可采用CheckBoxP ...
- spring初始化顺序
首先,Spring bean的默认加载顺序是怎么控制的 工程中有2个bean,A和B,其中必须先初始化A再初始化B,但是没有depend-on或者Order等方式去保证,只不过恰好刚好这么运行着没出事 ...
- JS开发中的一些小技巧和方法
生成指定范围内的随机数 当我们需要获取指定范围(min,max)内的整数的时候,下面的代码非常适合:这段代码用的还挺多的. function setRadomNum(min,max){ return ...