洛谷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”
輸入輸出樣例
輸入樣例#1: 復制5 5 1 2 3 4 5 2 1 5 2 2 3 2 3 3 1 3 6 2 3 5輸出樣例#1: 復制
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=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=m;i++){ scanf("%d%d%d",&op,&x,&y); if(op==1)a[x]=y; if(op==2){ flag=0; cnt=0; for(int j=x;j<=y;j++)b[++cnt]=a[j]; sort(b+1,b+cnt+1); for(int j=1,num=b[1];j<=cnt;j++,num++){ if(b[j]!=num){ flag=1; puts("yuanxing"); break; } } if(flag==0)puts("damushen"); continue; } } }70分 暴力
#include<bits/stdc++.h> const int yql=998244353; const int N=500010; 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=1,x=0;char ch; do{ch=getchar();if(ch==‘-‘)f=-1;}while(ch<‘0‘||ch>‘9‘); do{x=x*10+ch-‘0‘;ch=getchar();}while(ch>=‘0‘&&ch<=‘9‘); return f*x; } inline int fpow(int x,int p){ int ans=1; for(;p;p>>=1,x=(1LL*x*x)%yql)if(p&1)ans=(1LL*ans*x)%yql; return ans; } inline int calc(int x){return 1LL*x*(x+1)%yql*(x<<1|1)%yql*inv%yql;} struct Segment_Tree{ #define lson (o<<1) #define rson (o<<1|1) int maxv[N<<2],minv[N<<2]; ll sumv[N<<2],s[N<<2]; 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)>>1; build(lson,l,mid);build(rson,mid+1,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)>>1; if(q<=mid)change(lson,l,mid,q,v); else change(rson,mid+1,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)>>1; if(ql<=mid)query(lson,l,mid,ql,qr); if(qr>mid)query(rson,mid+1,r,ql,qr); } }T; int main(){ n=read();m=read();inv=fpow(6,yql-2); for(int i=1;i<=n;i++)a[i]=read(); T.build(1,1,n); while(m--){ int opt=read(),l=read(),r=read(); if(opt==1)T.change(1,1,n,l,r); else{ mx=0;mn=inf;ss=0;sum=0; T.query(1,1,n,l,r); if(mx-mn==r-l&&(1LL*(mx+mn)*(r-l+1))>>1==ss&&(calc(mx)-calc(mn-1)+yql)%yql==sum)puts("damushen"); else puts("yuanxing"); } } }100分 線段樹
洛谷P3792 由乃與大母神原型和偶像崇拜