博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ-3207 花神的嘲讽计划Ⅰ
阅读量:5307 次
发布时间:2019-06-14

本文共 1660 字,大约阅读时间需要 5 分钟。

貌似是先把各个子串处理成各个Hash值,然后离散化,然后这道题就变成询问区间[x,y]中有没有数字k。

主席树直接上。。。

#include 
#include
#include
#include
#include
#include
#include
#define rep(i, l, r) for(int i=l; i<=r; i++)#define clr(x, c) memset(x, c, sizeof(x))#define lowbit(x) (x&-x)#define maxn 600009#define maxm 5000009#define hash 2333#define inf 0x7fffffff#define s(x) Sum[x]#define t(x) Tree[x]#define l(x) Left[x]#define r(x) Right[x]#define k(x) Key[x]#define ull unsigned long longusing namespace std;inline int read(){ int x=0, f=1; char ch=getchar(); while (!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();} while (isdigit(ch)) x=x*10+ch-'0', ch=getchar(); return x*f;}struct node{ull v; int t;} q[maxn];bool cmp(node a, node b){return a.v
>1; if (k<=mid) r(t)=r(u), Add(k, l, mid, l(u), l(t)); else l(t)=l(u), Add(k, mid+1, r, r(u), r(t));}inline bool Query(int l, int r, int k){ int L=1, R=ln, x=t(l-1), y=t(r); while (L
>1; if (k<=mid) R=mid, x=l(x), y=l(y); else L=mid+1, x=r(x), y=r(y); } if (s(y)-s(x)) return true; else return false;}int main(){ n=read(), m=read(), k=read(); t(0)=++z, l(z)=r(z)=z; rep(i, 1, n) a[i]=read(); rep(i, 1, n-k+1) q[i].v=Hash(i), q[i].t=i; n=n-k+1; rep(i, 1, m) { qx[i]=read(), qy[i]=read()-k+1; rep(j, 1, k) a[j]=read(); q[i+n].v=Hash(1), q[i+n].t=i+n; } sort(q+1, q+m+n+1, cmp); k(q[1].t)=++ln; rep(i, 2, n+m) k(q[i].t) = q[i].v!=q[i-1].v ? ++ln : ln; rep(i, 1, n) Add(k(i), 1, ln, t(i-1), t(i)); rep(i, 1, m) if (Query(qx[i], qy[i], k(i+n))) printf("No\n"); else printf("Yes\n"); return 0;}

转载于:https://www.cnblogs.com/NanoApe/p/4479447.html

你可能感兴趣的文章
项目数据分析师CPDA印章
查看>>
代码的抽象三大原则
查看>>
Nobody Wonder Girls 罗马文歌词
查看>>
beego 连接postgres
查看>>
监控系统状态
查看>>
delphi listbox 使用
查看>>
MySQL 数据库 -- 数据操作
查看>>
PHP 事件机制(2)
查看>>
[Bzoj1047][HAOI2007]理想的正方形(ST表)
查看>>
mysql导入hbase
查看>>
JavaScript中null和undefined的总结
查看>>
Python开发环境Spyder安装方法
查看>>
Web测试实践——每日例会记录12.30(2)
查看>>
Python内置函数(16)——ord
查看>>
USBIP --ubuntu 10.04(USB局域网共享)
查看>>
网络命令之 ss
查看>>
oracle 导入导出
查看>>
python之路,day6-面向对象
查看>>
Groovy中String转换Gstring用于动态插值
查看>>
查看dmesg,会打出很多的日志“TCP: too many of orphaned sockets”
查看>>