身为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]由乃的更多相关文章

  1. 【BZOJ4722】由乃

    [BZOJ4722]由乃 题面 bzoj 题解 考虑到区间长度为\(14\)时子集个数\(2^{14}>14\times 1000\),由抽屉原理,区间长度最多为\(13\)(长度大于这个值就一 ...

  2. [BZOJ4722]由乃[鸽巢原理+bitset+倍增]

    题意 给定长为 \(n\) 序列 \(a\) ,要求支持两种操作: \(1.\) 询问在一个区间 \([l,r]\) 中,是否能够选出两个交集为空的集合 $ \rm X ,Y$, 使得 \(\sum_ ...

  3. [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)

    4722: 由乃 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 360  Solved: 131[Submit][Status][Discuss] D ...

  4. $bzoj4722$ 由乃 搜索

    正解:搜索 解题报告: 传送门$QwQ$ 首先发现长度为$len$的子集的值域为$[0,v\cdot len+len]$,数量为$2^{len}$.所以当$2^{len}\geq v\cdot len ...

随机推荐

  1. 成功开发iPhone软件的10个步骤

    总结 几条要注意的原则: 1.了解你的用户,并与他们接触.交谈. 2.不要做虚幻的想象的设计,多从成功软件中汲取经验. 3.软件要设计得“小”. 4.找到足够多的设计方案,通过数量的累计来得到好的质量 ...

  2. linux防火墙开启端口

    1.使用命令查看端口开启情况(下图为安装时未选择开启防火墙) [root@fullstack ~]# iptables -L -n Chain INPUT (policy ACCEPT) target ...

  3. 我的页面定制CSS代码(SimpleGamboge皮肤)

    我的页面定制CSS代码,针对博客园SimpleGamboge皮肤. 调整: 1.左上图片更换为自己的头像 2.扩大左侧栏宽度,缩小右侧主栏宽度宽度 3.扩大内容页面的评论区宽度,工具图标靠左 4.去广 ...

  4. 使用node.js生成excel报表下载(excel-export express篇)

    引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种 ...

  5. css负边距之详解

    自从1998年CSS2作为推荐以来,表格的使用渐渐退去,成为历史.正因为此,从那以后CSS布局成为了优雅代码的代名词. 对于所有设计师使用过的CSS概念,负边距作为最少讨论到的定位方式要记上一功.这就 ...

  6. springmvc拦截器验证登录时间

    在前一篇[Filter实现用户名验证]的随笔里,记录了如何使用filter 这次增加了拦截器实现 ①filter实现用户登陆时验证用户名是否为null ②interceptor实现用户登陆时时间判断, ...

  7. 【GitHub Desktop】MacOS和Win下配置及简单的使用

    一. GitHub介绍 1.GitHub 是为开发者提供 Git 仓库的托管服务.这是一个让开发者与朋友.同事.同学及陌生人共享代码的完美场所. 总结一下,GitHub 最大的特征是"面向人 ...

  8. 微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找?

    原文地址:http://www.wxapp-union.com/portal.php?mod=view&aid=359 本文由本站halfyawn原创:感谢原创者:如有疑问,请在评论内回复   ...

  9. LaTeX简单使用方法

    Content LaTeX的用途 LaTeX文件布局 LaTeX的文档格式 公式环境 图的排版 表格的排版 有序列表和无序列表 引用 伪代码 参考文献 LaTeX的用途 LaTeX是一种基于TeX的排 ...

  10. bug 汇总

    联通营业厅充话费无法在线支付,chrome Python 64位安装包 win7 64 windows 10 右键菜单 Android studio IE11 layout