bzoj

先考虑一种简单的情况,即这个区间是否有相同的数,因为值域大小为1000,那么当区间长度\(>1000\)时,根据鸽巢原理,一定会有两个相同的数,这时候可以直接输出Yuno

进一步的,对于长度为\(len\)的区间,子集的值域为\([0,v*len]\),子集个数为\(2^{len}\),那么可以得到如果满足\(2^{len}>v*len+1\)的区间,一定有两个一样权值的子集(有交就把交去掉),可以解得这个界为\(len\ge 14\).那么对于\(\le 13\)的部分,就暴力枚举每个数在哪个集合中,或者是不在集合中,复杂度\(O(3^{len})\),其实可以\(meet in the middle\),先搜前一半,得到所有选取情况下\(A\)集合权值\(-B\)集合权值的值,然后搜另一个集合,直接查是否存在对应\(A\)集合权值\(-B\)集合权值的相反数,以及是否有那个值为0的方案,复杂度\(O(3^{\frac{len}{2}})\)

至于修改操作,那么每次询问这个值的时候给他修改总修改次数-以及修改次数 次,因为这个修改可以看成在有向图上走\(x\)步,所以可以预处理走一些步数的情况,修改时直接大力跳即可

#include<bits/stdc++.h>
#define LL long long
#define uLL unsigned long long
#define db double using namespace std;
const int N=1e5+10,M=1000+10;
int rd()
{
int x=0,w=1;char ch=0;
while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int n,q,v,to[M][M],cn[N],a[N],bt[N];
void add(int x,int y){while(x<=n) bt[x]+=y,x+=x&(-x);}
int gsm(int x){int an=0;while(x) an+=bt[x],x-=x&(-x);return an;}
int bk[N],st[M<<2],tp,s2[M<<2],t2;
void wk(int x)
{
int dt=gsm(x)-cn[x];
cn[x]+=dt;
while(dt>v) a[x]=to[a[x]][v],dt-=v;
a[x]=to[a[x]][dt];
} int main()
{
n=rd(),q=rd(),v=rd();
for(int i=1;i<=n;++i) a[i]=rd();
for(int i=0;i<v;++i) to[i][0]=i,to[i][1]=1ll*i*i*i%v;
for(int j=2;j<=v;++j)
for(int i=0;i<v;++i)
to[i][j]=to[to[i][j-1]][1];
while(q--)
{
int op=rd(),l=rd(),r=rd();
if(op==2) add(l,1),add(r+1,-1);
else
{
if(r-l+1>=14) puts("Yuno");
else
{
int md=(r-l+1)/2;
bool ok=0;
st[tp=1]=50000;
for(int i=l;i<=l+md-1;++i)
{
wk(i);
int latp=tp;
for(int j=1;j<=latp;++j)
{
st[++tp]=st[j]+a[i]+1;
ok|=st[tp]==50000,++bk[st[tp]];
st[++tp]=st[j]-(a[i]+1);
ok|=st[tp]==50000,++bk[st[tp]];
}
}
s2[t2=1]=50000;
for(int i=l+md;!ok&&i<=r;++i)
{
wk(i);
int latp=t2;
for(int j=1;j<=latp;++j)
{
s2[++t2]=s2[j]+a[i]+1;
ok|=s2[t2]==50000||bk[100000-s2[t2]];
s2[++t2]=s2[j]-(a[i]+1);
ok|=s2[t2]==50000||bk[100000-s2[t2]];
}
}
puts(ok?"Yuno":"Yuki");
while(tp>1) bk[st[tp]]=0,--tp;
}
}
}
return 0;
}

bzoj 4722 由乃的更多相关文章

  1. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  2. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  3. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  4. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  5. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

  6. 【sdoi2013】森林 BZOJ 3123

    Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...

  7. 【清华集训】楼房重建 BZOJ 2957

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

  8. 【splay】文艺平衡树 BZOJ 3223

    Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3  ...

  9. bzoj 刷水

    bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...

随机推荐

  1. Python中的OS对路径的操作以及应用

    目录处理 OS目录处理目录-->路径,文件夹 文件:html 1. 新建和删除一个目录import os #引入os目录from xx import xxos.mkdir("D:\\P ...

  2. [SQL server2008筛选时报错,无法为该请求检索数据 解决方案]

    当SQL数据太多时,我们需要通过筛选来查询自己需要的数据. 当我在使用SQLserver 2008的时候 遇到了这个错误1 以下是微软提供的解决方案的网址 (SQL SERVER SP1补丁) htt ...

  3. 在发布ASP.NET网站的时候,出现state server错误

    错误信息如下: 在发布ASP.NET网站的时候,出现state server错误: Server Error in '/' Application. ------------------------- ...

  4. druid连接池各属性说明

    转: druid连接池各属性说明 2018年10月17日 04:56:57 ht_kasi 阅读数:374   版权声明: https://blog.csdn.net/ht_kasi/article/ ...

  5. LinuxE2系统刷机后OSCAM安装与读卡器设置

    我也属于E2小白,最近才开始玩这个系统.从dinobot 4k+,到H7s,在到H5,各种E2机器都买了.刚开始入手的时候,怎么这么麻烦?慢慢的发现,烧新,玩E2也是一种乐趣,只不过最近困扰我的刷机后 ...

  6. java最常见的5个错误

    1. Null 的过度使用 避免过度使用 null 值是一个最佳实践.例如,更好的做法是让方法返回空的 array 或者 collection 而不是 null 值,因为这样可以防止程序抛出 Null ...

  7. Nginx 代理TCP/UDP 端口

    Nginx 在1.9版本后新增TCP/UDP 代理 Nginx默认是没有开启TCP/UDP代理.需要在编译Nginx是添加--with-stream进行开启. 编译安装Nginx tar zxf cd ...

  8. 图片和Base64字符串互转

    图片URL转成Base64字符串 /// <summary> /// 通过Url获取到Image格式的文件 /// </summary> /// <param name= ...

  9. 【Python基础】lpthw - Exercise 46 项目骨架

    本节将会介绍如何构建一个项目骨架目录.骨架目录中会包含项目文件布局.自动测试代码.模块及安装脚本. 一.环境配置(win10) 1. 检查并确认自己只安装了一个python版本. cd ~ pytho ...

  10. CentOS7中yum配置

    1.打开centos的yum文件夹 输入命令cd  /etc/yum.repos.d/ 2.用wget下载repo文件 输入命令wget  http://mirrors.aliyun.com/repo ...