【BZOJ4722】由乃
【BZOJ4722】由乃
题面
题解
考虑到区间长度为\(14\)时子集个数\(2^{14}>14\times 1000\),由抽屉原理,区间长度最多为\(13\)(长度大于这个值就一定有解)。
那么对于一个区间我们可以暴力背包\(dp\)出来,然后\(bitset\)优化下就是\(\frac {13\times 1000}{64}\)的,如果转移时转移的状态与目前状态有交显然就有解。
对于区间立方用树状数组记一下每个数立方了多少次,立方后的数倍增预处理即可。
代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <bitset>
using namespace std;
inline int gi() {
register int data = 0, w = 1;
register char ch = 0;
while (!isdigit(ch) && ch != '-') ch = getchar();
if (ch == '-') w = -1, ch = getchar();
while (isdigit(ch)) data = 10 * data + ch - '0', ch = getchar();
return w * data;
}
const int MAX_N = 1e5 + 5;
int N, Q, Mod, a[MAX_N], c[MAX_N];
inline int lb(int x) { return x & -x; }
void Add(int x, int v) { while (x <= N) c[x] += v, x += lb(x); }
int Sum(int x) { int res = 0; while (x) res += c[x], x -= lb(x); return res; }
bitset<13001> f;
int nxt[18][MAX_N];
int Trans(int x, int y) {
for (int i = 17; ~i; i--)
if (y >> i & 1) x = nxt[i][x];
return x;
}
int main () {
#ifndef ONLINE_JUDGE
freopen("cpp.in", "r", stdin);
#endif
N = gi(), Q = gi(), Mod = gi();
for (int i = 1; i <= N; i++) a[i] = gi();
for (int i = 0; i < Mod; i++) nxt[0][i] = i * i * i % Mod;
for (int i = 1; i < 18; i++)
for (int j = 0; j < Mod; j++) nxt[i][j] = nxt[i - 1][nxt[i - 1][j]];
while (Q--) {
int op = gi(), l = gi(), r = gi();
if (op == 1) {
if (r - l + 1 >= 14) puts("Yuno");
else {
f.reset();
f[0] = 1;
for (int i = l; i <= r; i++) {
int val = Trans(a[i], Sum(i)) + 1;
if ((f & (f << val)).any()) { puts("Yuno"); goto Nxt; }
f |= f << val;
}
puts("Yuki");
Nxt : ;
}
} else Add(l, 1), Add(r + 1, -1);
}
return 0;
}
【BZOJ4722】由乃的更多相关文章
- [bzoj4722]由乃
身为10班人,就凭标题,这道题是一定要做的. 但是做了才发现有毒....所以是信念和题解和大腿支撑了我! 先"假设"自己实力过硬,推出了结论:当区间过大时,必定存在一种方案可以输出 ...
- [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 ...
随机推荐
- Extra:Variable Types
文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 在我们使用Cg或者HLSL进行shader编写的过程中,常常涉及到一些变量 ...
- 喜大普奔,又拍云全新产品 WebSocket 上线啦
作为一款现象级 MMORPG,魔兽世界迎来了自己的 9.0 版本.巧的是,又拍云最近也更新发布了一款产品--WebSocket.你可能会说,两者有个 mao 关系,不着急.我们先来聊聊魔兽世界~ 熟悉 ...
- Web应急:移动端劫持
PC端访问正常,移动端访问出现异常,比如插入弹窗.嵌入式广告和跳转到第三方网站,将干扰用户的正常使用,对用户体验造成极大伤害. 现象描述 部分网站用户反馈,手机打开网站就会跳转到赌博网站. 问题处理 ...
- THUPC2019/CTS2019/APIO2019自闭记
自闭了,自闭选手不配拥有游记.
- Blend 触发器
原文:Blend 触发器 介绍用定义触发器来控制视频 的 开始 暂停 继续 停止 触发器设置 效果
- 01 .NET CORE 2.2 使用OCELOT -- 简单使用
目前参考两篇文章,已实现基本的ocelot的网关功能. https://www.cnblogs.com/xlxr45/p/11320988.html https://www.jianshu.com/p ...
- JAVA操作InfluxDB的一个Demo
一.基础连接类 package com.test.repository.utils; import com.dcits.domain.entry.bo.common.InfluxDbRow; impo ...
- ElasticSearch(九)e代驾使用Elasticsearch流程设计(Yii1版本)
一.控制器层的更新.添加.删除 class AddKnowledgeAction extends CAction { //add and update public function actionPo ...
- office viso 2007根据现有数据库建立数据库模型图
当数据库表很多的时候,表之间的关系就变得很复杂.光凭记忆很难记住,尤其是数据库键值没有外键约束时. 所以有个数据库模型图各个表之间的关系就显而易见了. 打开 office viso 2007 文件&g ...
- linux Yum相关
python编写,是centos 和 redhat的包管理工具,类似于 pip 常用的yum命令 Yum list 查看所有的包 Yum list python 列出所有python包 yum sea ...