hhh
Posted qq8260573
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hhh相关的知识,希望对你有一定的参考价值。
hhh
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef unsigned int uint; 4 const int N=2e5+5; 5 int n,now,len[N<<2]; 6 uint hsh0,hsh1,Pow[N],hsh[2][N<<2]; 7 inline int read() { 8 int x=0; char c=getchar(); 9 while(c<‘0‘||c>‘9‘) c=getchar(); 10 while(c>=‘0‘&&c<=‘9‘) x=(x<<3)+(x<<1)+c-‘0‘,c=getchar(); 11 return x; 12 } 13 14 int ls(int p) {return p<<1;} 15 int rs(int p) {return p<<1|1;} 16 void build(int p,int l,int r) { 17 if(l==r) {len[p]=1; return ;} 18 int Mid=(l+r)>>1; 19 build(ls(p),l,Mid); 20 build(rs(p),Mid+1,r); 21 len[p]=len[ls(p)]+len[rs(p)]; 22 } 23 void get(int p) { 24 hsh[0][p]=hsh[0][ls(p)]+hsh[0][rs(p)]*Pow[len[ls(p)]]; 25 hsh[1][p]=hsh[1][ls(p)]*Pow[len[rs(p)]]+hsh[1][rs(p)]; 26 } 27 void update(int x,int p,int l,int r) { 28 if(l==r) {hsh[0][p]=hsh[1][p]=1; return ;} 29 int Mid=(l+r)>>1; 30 if(x<=Mid) update(x,ls(p),l,Mid); 31 else update(x,rs(p),Mid+1,r); 32 get(p); 33 } 34 void query0(int ql,int qr,int p,int l,int r) { 35 if(ql<=l&&r<=qr) { 36 hsh0+=hsh[0][p]*Pow[now]; 37 now+=len[p]; 38 return ; 39 } 40 int Mid=(l+r)>>1; 41 if(ql<=Mid) query0(ql,qr,ls(p),l,Mid); 42 if(qr>Mid) query0(ql,qr,rs(p),Mid+1,r); 43 } 44 void query1(int ql,int qr,int p,int l,int r) { 45 if(ql<=l&&r<=qr) { 46 hsh1+=hsh[1][p]*Pow[now]; 47 now+=len[p]; 48 return ; 49 } 50 int Mid=(l+r)>>1; 51 if(qr>Mid) query1(ql,qr,rs(p),Mid+1,r); 52 if(ql<=Mid) query1(ql,qr,ls(p),l,Mid); 53 } 54 55 int main() { 56 n=read(); 57 Pow[0]=1; 58 for(int i=1;i<=n;i++) Pow[i]=Pow[i-1]*233; 59 build(1,1,n); 60 for(int i=1;i<=n;i++) { 61 int a=read(); 62 update(a,1,1,n); 63 int l=min(a-1,n-a); 64 if(l) { 65 hsh0=now=0; 66 query0(a-l,a-1,1,1,n); 67 hsh1=now=0; 68 query1(a+1,a+l,1,1,n); 69 if(hsh0^hsh1) return printf("NO"),0; 70 } 71 } 72 printf("YES"); 73 }
以上是关于hhh的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data 错误:“HHH000389 不成功:如果存在则删除表”
错误:HHH000299:无法完成架构更新 java.lang.NullPointerException