BZOJ:4333: JSOI2012 智者的考验
4333: JSOI2012 智者的考验
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 68 Solved: 18
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
0 0 1
1 1 0
7 4
1 1 7
0 2 3
0 3 4
1 1 7
Sample Output
3
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 1000001
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
struct na{int c[],sum,l,r,y,a,Q,V;}t[MN<<];
int n,m,q,rx,ry,o[],s[],to[][],num=,bo,ro=,x,N[];
void build(int &p,int l,int r){
if (p==) p=++num,t[p].l=t[p].r=t[p].sum=t[p].y=,t[p].a=-;
t[p].c[N[]]=((r-l)>>)+(!(l&)||!(r&));
t[p].c[N[o[]]]=((r-l)>>)+((l&)||(r&));t[p].sum=((((r-l)>>)+((l&)||(r&)))&)*o[];
if (l==r) return;
int mid=l+r>>;
build(t[p].l,l,mid);build(t[p].r,mid+,r);
}
void pd(int p,int l,int r){
if (t[p].a!=-){
if (t[p].l) t[t[p].l].a=t[p].a,t[t[p].l].V=t[p].V,t[t[p].l].Q=t[p].Q,t[t[p].l].y=;
if (t[p].r) t[t[p].r].a=t[p].a,t[t[p].r].V=t[p].V,t[t[p].r].Q=t[p].Q,t[t[p].r].y=;
memset(t[p].c,,sizeof(t[p].c));
t[p].c[N[t[p].V]]=((r-l)>>)+(!(l-t[p].Q&)||!(r-t[p].Q&));
t[p].c[N[t[p].a^t[p].V]]=((r-l)>>)+((l-t[p].Q&)||(r-t[p].Q&));t[p].sum=((((r-l)>>)+((l-t[p].Q&)||(r-t[p].Q&)))&)*t[p].a^((r-l+&)*t[p].V);
t[p].a=-;
}
}
void up(int p,int l,int r){
int mid=l+r>>;
pd(t[p].l,l,mid);pd(t[p].r,mid+,r);
t[p].sum=t[t[p].l].sum^t[t[p].r].sum^(((mid-l+)&)*t[t[p].l].y)^(((r-mid)&)*t[t[p].r].y);
for (int i=;i<;i++) t[p].c[i]=t[t[p].l].c[N[s[i]^t[t[p].l].y]]+t[t[p].r].c[N[s[i]^t[t[p].r].y]];
}
void cg(int p,int l,int r,int po,int v){
if (po<=l) t[p].y^=v;else{
pd(p,l,r);
int mid=l+r>>;
cg(t[p].r,mid+,r,po,v);
if (mid>=po) cg(t[p].l,l,mid,po,v);
up(p,l,r);
}
}
int ask(int p,int l,int r,int po){
if (t[p].a!=-) return (t[p].a*(po-t[p].Q&))^t[p].V^t[p].y;
if (l==r) return t[p].sum^t[p].y;
int mid=l+r>>;
if (po<=mid) return ask(t[p].l,l,mid,po)^t[p].y;else return ask(t[p].r,mid+,r,po)^t[p].y;
}
int que(int p,int l,int r,int L,int R,int v){
pd(p,l,r);
v^=t[p].y;
if (L==l&&R==r) return t[p].c[N[v]];
int mid=l+r>>;
if (R<=mid) return que(t[p].l,l,mid,L,R,v);else
if (L>mid) return que(t[p].r,mid+,r,L,R,v);else
return que(t[p].l,l,mid,L,mid,v)+que(t[p].r,mid+,r,mid+,R,v);
}
void ca(int p,int l,int r,int L,int R,int v,int V,int Q){
if (L==l&&R==r){
t[p].a=v;t[p].V=V;t[p].y=;t[p].Q=Q;
t[p].c[N[V]]=((r-l)>>)+(!(l-Q&)||!(r-Q&));
t[p].c[N[v^V]]=((r-l)>>)+((l-Q&)||(r-Q&));t[p].sum=(((((r-l)>>)+((l-Q&)||(r-Q&)))&)*v)^((r-l+&)*V);
}else{
pd(p,l,r);V^=t[p].y;
int mid=l+r>>;
if (R<=mid) ca(t[p].l,l,mid,L,R,v,V,Q);else
if (L>mid) ca(t[p].r,mid+,r,L,R,v,V,Q);else
ca(t[p].l,l,mid,L,mid,v,V,Q),ca(t[p].r,mid+,r,mid+,R,v,V,Q);
up(p,l,r);
}
}
int main(){
register int i,j;
rx=read();ry=read();n=;
for (i=;i<rx;i++)
for (j=;j<ry;j++) o[i]^=<<(i*ry+j),o[j+rx]^=<<(i*ry+j),q^=read()<<(i*ry+j);
n=read();m=read();
s[bo=num=]=;
for(;bo<=num;){
for (i=;i<rx+ry;i++){
for (j=;j<=num;j++)
if (s[j]==(s[bo]^o[i])) break;
if (j>num) s[++num]=s[bo]^o[i];
to[bo][i]=j;
}
bo++;
}
for (i=;i<;i++) N[i]=-;
for (i=;i<=num;i++) N[s[i]]=i;
num=;
build(ro,,n);
while (m--){
bo=read();
if (bo==) bo=read(),cg(ro,,n,bo,o[read()-]^ask(ro,,n,bo)^(bo==?:ask(ro,,n,bo-)));else
if (bo==) if (bo=read(),x=read(),N[q]==-) puts("");else printf("%d\n",que(ro,,n,bo,x,q));else
if (rx=read(),ry=read(),x=o[read()-],cg(ro,,n,ry+,ask(ro,,n,ry)^(((ry-rx+)&)*x)),ca(ro,,n,rx,ry,x,,rx-),rx-) cg(ro,,n,rx,ask(ro,,n,rx-));
}
}
BZOJ:4333: JSOI2012 智者的考验的更多相关文章
- [BZOJ 4332] [JSOI2012]分零食(DP+FFT)
[BZOJ 4332] [JSOI2012]分零食(DP+FFT) 题面 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\ ...
- bzoj 4327: JSOI2012 玄武密码
听说这题不公开.. 那就不贴题意了 一眼看上去还以为是exkmp的裸题.. 看了数据范围,呵呵.. 多串匹配嘛.. 就用AC自动机咯,而且每个点最多也就只有$4$个孩子 用原串在AC自动机上走,碰到的 ...
- bzoj 4330: JSOI2012 爱之项链
听说这题不公开.. 那就不贴题意了 首先要用burnside引理求出戒指的种数,那么对于一个顺时针旋转$k$个位置的置换就相当于连上一条$(i,(i+k)%R)$的边,每个环颜色必须相同 环的个数为$ ...
- 【题解】bzoj 4327 JSOI2012 玄武密码
原题传送门 我们先对所有询问串建立AC自动机(今天洛咕上有人分不清AC自动机和自动AC机) 然后将母串在AC自动机上跑,每走到一个点x,从x点出发沿着fail指针所能到的所有前缀都是匹配成功的,暴力向 ...
- bzoj 4332: JSOI2012 分零食 快速傅立叶变换
题目: Description 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\(f(x)=O*x^2+S*x+U\) 现 ...
- BZOJ 4327 JSOI2012 玄武密码(后缀自动机)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4327 [题目大意] 求每个子串在母串中的最长匹配 [题解] 对母串建立后缀自动机,用每 ...
- BZOJ 4327 [JSOI2012]玄武密码 (AC自动机)
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=4327 题解: 做法挺显然,建出AC自动机之后在上面跑,标记所有走过的点,然后再进行递推 ...
- BZOJ 4327: JSOI2012 玄武密码 后缀自动机
Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) # ...
- BZOJ 4332: JSOI2012 分零食 FFT+分治
好题好题~ #include <bits/stdc++.h> #define N 50020 #define ll long long #define setIO(s) freopen(s ...
随机推荐
- bzoj 4719: [Noip2016]天天爱跑步
Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.?天天爱跑步?是一个养成类游戏,需要 玩家每天按时上线,完成打卡任务.这个游戏的地图可以看作一一 ...
- IT服务(运维)管理实施的几个要点--第一章 IT服务质量的标准
子曰"干的最好就是个60分,稍有纰漏就是不及格" 谈一个事情,最先要谈的就是统一标准,又或者这个标准已经约定俗成,广泛认可,所以就可以略过.对于IT服务质量来说,确实有一个统一的标 ...
- ES6 函数的扩展1
1. 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接 ...
- 通过 kms 激活 office 2016
1.管理员模式打开cmd,并切换到office的安装路径 注:office2016默认安装在C:\Program Files\Microsoft Office\Office16,激活其他office自 ...
- 关于sleep函数的一些问题和资料
//================================================================================================ 2 ...
- Python第二十二天 stat模块 os.chmod方法 os.stat方法 pwd grp模块
Python第二十二天 stat模块 os.chmod方法 os.stat方法 pwd grp模块 stat模块描述了os.stat(filename)返回的文件属性列表中各值的意义,根据 ...
- jquery学习总结(超级详细)
本文仅针对jquery的部分知识点做总结,更为全面的可以去官网看中文文档.可以更为详细的了解jquery及其特性. window.onload $(document).ready() 执行 ...
- php curl 请求302跳转页面
今天对接支付接口,需要获取支付页面,发现支付商那边给的链接会发送302 跳转,最后发现该方法,绝对给力: <?php $url = 'http://auto.jrj.com.cn/'; $ch ...
- Java常用命令与参数设置
我介绍的JDK版本: 首先.介绍下JDK常用参数设置,如下是我个人环境的参数: -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m 我们 ...
- 一种laravel特有的serviceProvider的加载方式
这里的laravel版本5.5. 我是使用到dingo这个包的时候,觉得很奇怪,我们一般的包使用的时候都需要加载一个serviceProvider,提供服务,dingo/api这里也有ServiceP ...