[bzoj4722]由乃
身为10班人,就凭标题,这道题是一定要做的。
但是做了才发现有毒。。。。所以是信念和题解和大腿支撑了我!
先“假设”自己实力过硬,推出了结论:当区间过大时,必定存在一种方案可以输出”Yuno“。剩下就是这区区几个数的乱搞了。
数据结构学傻先不动声色地敲了一个线段树维护所有的立方操作,并且我发现自从noip2015挂过lazy tag以后就再也不会写错了。。。。这就是传说中教训的力量
然后我还是请教了一些更优秀的维护方法,不过万变不离其宗,这个常数说不要就不要了吧。。。。
接下来,我开始想当然:差不多了。。。再敲个快速幂。。。随便搞下。。。差不多了。。。
后来幸好看了下V,不是质数,那又要求phi啊?!
而且不一定互质,不仅要求phi而且要提取质因数啊?!
不想写啊,只能向倍增势力低头。
再后来,思考“区区几个数的乱搞”,好像并不容易。看了题解说得很含蓄,发现是个乱搞的思想。
对于区间【L,R】,以mid为界,左边枚举两个不相交子集,右边枚举两个不相交子集,判断它们的合法性。
于是就T了,原来我的复杂度和常数达到了十分可怕的境地。这就很不爽了。因为我不会卡常。
再回过头来看那个“假设”,有实力的人证一证,没实力的人写个暴力找下规律,发现可以把题解中的下界13改为10,这样就卡过去了。
(当然,你写9也能A)。。。。数据太随机了。
事情还没结束,time排名垫底了,原来是我乱搞写错了。四重循环,不挂才怪。正确做法还得写一个桶,把左边所有值扔进桶里,这样询问就飞起来了。
最后shy说:你这样也能过,说明常数实在太小了。
2333
改了一下。。。仍旧快垫底?
#include<cstdio> #include<cstring> #include<algorithm> #define N 200020 #define ll long long ],tree[N*];ll fa[N][]; ],V[]; ll a[N],b[N]; void push_down(int p,int st,int ed){ ){ f[p+p]+=f[p];f[p+p+]+=f[p];; tree[p+p]+=f[p]*(mid-st+);tree[p+p+]+=f[p]*(ed-mid); f[p]=; } } void update(int L,int R,int st,int ed,int p){ ;; )push_down(p,st,ed); if(R<=mid)update(L,R,st,mid,p+p);else ,ed,p+p+);else update(L,mid,st,mid,p+p),update(mid+,R,mid+,ed,p+p+); } int query(int x,int st,int ed,int p){ if(st==x&&ed==x)return tree[p]; )push_down(p,st,ed); ; if(x<=mid)return query(x,st,mid,p+p);else ,ed,p+p+); } ll quickmi(ll x,ll k){ ll tmp=,a=x; ){ ==){tmp=tmp*a%mo;} a=a*a%mo;k=k/; }return tmp; } void work(int st,int ed,int cc){ ; <<(mid-st+))-,l2=(<<(ed-mid))-; ;u<=l1;u++) ;v<=l1-u;v++))||v!=){ ,a2=,a3=,a4=; for(int i=st;i<=mid;i++){ <<(i-st); )a1+=b[i]+;)a2+=b[i]+; } if(a1>a2)std::swap(a1,a2); ;return;} V[a2-a1]=;tot++;bb[tot]=a2-a1; } ;x<=l2;x++) ;y<=l2-x;y++))||y!=){ ,a2=,a3=,a4=; ;i<=ed;i++){ <<(i-mid-); )a3+=b[i]+;)a4+=b[i]+; } if(a3>a4)std::swap(a3,a4); ;return;} ){fool=;return;} } } int main() { //freopen("yono.in","r",stdin);//freopen("my.out","w",stdout); scanf("%d%d%d",&n,&m,&mo); ;i<=n;i++)scanf("%lld",&a[i]); ;i<mo;i++) fa[i][]=i*i%mo*i%mo; ;j<=;j++) ;i<mo;i++) fa[i][j]=fa[fa[i][j-]][j-]; ;cc<=m;cc++){ int op,L,R;scanf("%d%d%d",&op,&L,&R); ){update(L,R,,n,);continue;} >)printf("Yuno\n");else{ for(int i=L;i<=R;i++){ ll tt=query(i,,n,),x=tt,tmp=,now=a[i]; b[i]=a[i]; ;j>=;j--)<<j)){ x-=<<j;b[i]=fa[b[i]][j]%mo; } } fool=;tot=; work(L,R,cc); ;i<=tot;i++)V[bb[i]]=; )printf("Yuno\n");else printf("Yuki\n"); } } }
bzoj4722
[bzoj4722]由乃的更多相关文章
- 【BZOJ4722】由乃
[BZOJ4722]由乃 题面 bzoj 题解 考虑到区间长度为\(14\)时子集个数\(2^{14}>14\times 1000\),由抽屉原理,区间长度最多为\(13\)(长度大于这个值就一 ...
- [BZOJ4722]由乃[鸽巢原理+bitset+倍增]
题意 给定长为 \(n\) 序列 \(a\) ,要求支持两种操作: \(1.\) 询问在一个区间 \([l,r]\) 中,是否能够选出两个交集为空的集合 $ \rm X ,Y$, 使得 \(\sum_ ...
- [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
4722: 由乃 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 360 Solved: 131[Submit][Status][Discuss] D ...
- $bzoj4722$ 由乃 搜索
正解:搜索 解题报告: 传送门$QwQ$ 首先发现长度为$len$的子集的值域为$[0,v\cdot len+len]$,数量为$2^{len}$.所以当$2^{len}\geq v\cdot len ...
随机推荐
- iOS 用户的隐私数据-privacy-sensitive data
1 Xcode 报错:This app has crashed because it attempted to access privacy-sensitive data without a usa ...
- httpie 取代 curl
接口测试有人喜欢postman(for windows or mac) 如果长期用linux工作,可能更喜欢命令的方式,比如curl最近深入了解了下django-rest-framwork,他们推荐了 ...
- ubuntu 搞坏了sudoers文件之修复方案
pkexec visudo askubuntu原回答摘抄如下 On a modern Ubuntu system (and many other GNU/Linux distributions), f ...
- liniux mint android-ndk风波
我的安装过程sudo chmod a+x android-ndk-r10d-linux-x86_64.bin/dowonload $ ./android-ndk-r10d-linux-x86_64.b ...
- Xcode LLDB 调试Tips
1. bt -- 显示当前线程调用堆栈 2. e -- 执行表达式,动态修改当前线程变量的值 3. frame variable -- 打印当前堆栈所有变量值 4. expr -O --lan ...
- matlab绘图基础
matlab绘制条形图并分组显示: a =[1 2 3] b =[4 5 6] >> d=[a;b] d = 1 2 3 4 5 6 >> bar(d,'group') 修改横 ...
- 3 Git服务器搭建
1. 环境部署 系统环境:服务器端:CentOS 6.5 ,ip:192.168.56.1 客户端:CentOS 6.5 ,ip:192.168.56.101 软件版本:服务器端:源码编译安装,git ...
- extern "c"用法解析
转自: extern "c"用法解析 - 简书 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟是一种面向对象的程序设计语言, ...
- 【jquery】基础知识
jquery简介 1 jquery是什么 jquery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. jQuery是继prototype之后 ...
- GroupBy(..)的四种声明方式的理解及调用
这里我们以 List<Student> studs作为 source,但是注意,studs中的学生可以是分别属于不同的班级和年级 先看GroupBy的第一种声明: public stati ...