【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 ...
随机推荐
- Sitecore XP 8.2 新功能
Sitecore的®体验平台™ 8.2是最全面的更新最新的一个,平衡增强现有客户,而在同一时间提供了引人注目的新功能.你可以在这里阅读新闻稿,但我想对8.2中的一些重大变化给予一些额外的关注.作为奖励 ...
- 图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作
图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作 什么是tabBar? 顶部或者底部tab栏如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以 ...
- 【JVM】jstat命令详解---JVM的统计监测工具
java进程的PID获取命令: https://www.cnblogs.com/sxdcgaq8080/p/10734752.html ================================ ...
- select2插件placeholder不显示的问题
如果设置了select2的templateSelection,没做特殊处理的话placeholder会不显示,需要做特殊处理 templateSelection: function(repo){ if ...
- WMware Workstation Pro安装教程
[1]右键单击WMware Workstation Pro的可执行文件(.exe),选择以管理员身份运行 [2]点击下一步 [3]勾选我接受许可协议中的条款,点击下一步 [4]点击更改,选择安装位置( ...
- Console程序下监控EFCore生成的SQL语句!
最近这两天在使用控制台程序学习EFCore,突然想看看生成的SQL语句,所以在网上找到一位大神的分享的方法! 准备工作: 1). MySqlEFCore NuGet: Pomelo.EntityF ...
- 4-rocketmq 发送时异常:system busy 和 broker busy 解决方案
原文:https://www.cnblogs.com/enenen/p/10138511.html 推荐阅读:https://juejin.im/post/5d996285f265da5bad4052 ...
- 前端H5知识总结
两年大专生活匆匆而过,身边的朋友也都各奔东西,9月份开始实习感觉自己的前端功底有所欠缺,这个暑假除了打工我还有一个半月的学习时间希望自己能够充分利用这段时间.7月3号所学知识在此做以下总结以便自己复习 ...
- 小程序动态设置style,使用内部数据
- iOS 报错信息: dyld: Library not loaded: @rpath/XCTest.framework/XCTest Referenced from
新建项目,引入framework,运行时出现警告:dyld: Library not loaded: @rpath/RLLibrary.framework/RLLibrary Referenced ...