BZOJ3207: 花神的嘲讽计划Ⅰ
来源:互联网 发布:做金融网络销售赚钱吗 编辑:程序博客网 时间:2024/04/30 10:21
居然一A了感动qwq
今天一个下午在捣鼓新到的MacBookPro
要好好努力辣~
然后最后终于可以用了(撒花
一开始以为是子序列…
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;char c;inline void read(int &a){ a=0;do c=getchar();while(c<'0'||c>'9'); while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();}struct Node{ Node *lc,*rc; int l,r; int Time; Node(){lc=rc=NULL;Time=0;}};int k;const int Mod=1000007;struct Key{ int *A; Key(){A=new int[k];} inline friend bool operator !=(Key a,Key b) { for(int i=0;i<k;i++)if(a.A[i]!=b.A[i])return true; return false; }};struct Tab{ Tab*next; int Data,last; Key Rec;}*Head[Mod];Tab *Tp;bool find(Tab *Cur,Key Rec){ if(Cur==NULL)return false; if(Cur->Rec!=Rec)return find(Cur->next,Rec); return Tp=Cur,true;}int Con;inline void Add(int pl,int C,Key Rec){ Tab *tp=new Tab; tp->Rec=Rec; tp->last=C; tp->next=Head[pl],Head[pl]=tp; tp->Data=++Con;}int Hash(Key a){ int res=0; for(int i=0;i<k;i++) res=((res<<3)+(res>>1)+a.A[i])%Mod; return res;}int Pre[1000001];inline Node *Build(int l,int r){ Node *N=new Node; N->l=l,N->r=r;N->Time=0; return N;}Node *Modify(Node *Old,int l){ int Mid=Old->l+Old->r>>1; Node *New=new Node; *New=*Old; if(New->l==New->r) return New->Time++,New; if(New->lc==NULL) New->lc=Build(Old->l,Mid),New->rc=Build(Mid+1,Old->r); if(l<=Mid)New->lc=Modify(New->lc,l); else New->rc=Modify(New->rc,l); return New->Time++,New;}int Query(Node *Old,Node *New,int l){ if((Old?Old->Time:0)==New->Time)return 0; if(New->l==New->r) return New->Time-(Old?Old->Time:0); int Mid=New->l+New->r>>1; if(Mid>=l)return Query((Old?Old->lc:NULL),New->lc,l); return Query((Old?Old->rc:NULL),New->rc,l); }Node *T[1000001];int n,m;int A[1000001];int main(){ read(n),read(m),read(k); if(n<k) { while(m--) puts("Yes"); return 0; } int i; for(i=1;i<k;i++) read(A[i]); Key ty; T[k-1]=Build(1,n); for(i;i<=n;i++) { read(A[i]);ty.A=A+i-k+1; int pl=Hash(ty),o; if(!find(Head[pl],ty)) { Add(pl,i,ty); o=Con; Pre[i]=0; } else { Pre[i]=Tp->last; Con=Tp->Data; Tp->last=i; } T[i]=Modify(T[i-1],Con); } ty.A=new int[k]; for(int i=1;i<=m;i++) { int x,y,pl; read(x),read(y); for(int j=0;j<k;j++)read(ty.A[j]); if(!find(Head[pl=Hash(ty)],ty)) {puts("Yes");} else { int TT=Query(T[x+k-2],T[y],Tp->Data); if(TT)puts("No"); else puts("Yes"); } } return 0;}
0 0
- BZOJ3207 花神的嘲讽计划Ⅰ
- BZOJ3207: 花神的嘲讽计划Ⅰ
- BZOJ3207: 花神的嘲讽计划Ⅰ
- bzoj3207 花神的嘲讽计划Ⅰ
- bzoj3207: 花神的嘲讽计划Ⅰ
- bzoj3207 花神的嘲讽计划I
- 【bzoj3207】花神的嘲讽计划Ⅰ hash
- Bzoj3207:花神的嘲讽计划Ⅰ&&Bzoj2653:middle
- [BZOJ3207][花神的嘲讽计划Ⅰ][主席树+Hash]
- 【bzoj3207】【花神的嘲讽计划I】【hash+主席树】
- 【BZOJ3207】花神的嘲讽计划Ⅰ hash+可持久化线段树
- [BZOJ3207]花神的嘲讽计划Ⅰ(hash+可持久化线段树)
- bzoj3207: 花神的嘲讽计划Ⅰ( 主席树 (动态开点) + hash )
- bzoj-3207 花神的嘲讽计划Ⅰ
- BZOJ 3207 花神的嘲讽计划Ⅰ 题解&代码
- 【主席树】BZOJ 3207 花神的嘲讽计划Ⅰ
- 3207: 花神的嘲讽计划Ⅰ 主席树+hash
- bzoj 3207 花神的嘲讽计划Ⅰ 主席树
- 近 100 个 Linux 常用命令大全
- spring@value注入spel表达式
- VS2013MFC对话框工程学习笔记十一 - 动态改变一个控件标题
- UVALive 7040 Color (容斥原理 + 组合数学递推公式 + 求逆元 + 基础数论)
- 【FFmpeg学习笔记004】 视音频数据处理入门
- BZOJ3207: 花神的嘲讽计划Ⅰ
- spring schema介绍
- Gateone
- jrtplib—VS2013 win7 下RTP开源协议库JRTPLIB3.9.1编译
- kmp算法理解
- leetcode之Palindrome Number
- 流媒体传输协议(rtp/rtcp/rtsp/rtmp/mms/hls)
- 【科普杂谈】IP地址子网划分
- 纯CSS多级导航栏