[BZOJ]4810: [Ynoi2017]由乃的玉米田
Time Limit: 30 Sec Memory Limit: 256 MB
Description
Input
Output
Sample Input
1 1 2 3 4
2 1 1 2
1 1 2 2
3 1 1 1
3 5 5 16
1 2 3 4
Sample Output
yumi
yuno
yuno
yumi
Solution
Code
#include<cstdio>
#include<algorithm>
#include<bitset>
using namespace std;
inline int read()
{
int x;char c;
while((c=getchar())<''||c>'');
for(x=c-'';(c=getchar())>=''&&c<='';)x=x*+c-'';
return x;
}
#define MN 100000
#define K 350
struct query{int k,l,r,x,t;}q[MN+];
bool cmp(query a,query b){return a.l/K==b.l/K?a.r<b.r:a.l<b.l;}
bitset<MN+> s1,s2;
int a[MN+],u[MN+],t[MN+],ans[MN+];
void change(int x)
{
if(u[x]^=){if(!t[a[x]]++)s1[a[x]]=s2[MN-a[x]]=;}
else if(!--t[a[x]])s1[a[x]]=s2[MN-a[x]]=;
}
int main()
{
int n,m,i,j,l=,r=;
n=read();m=read();
for(i=;i<=n;++i)a[i]=read();
for(i=;i<=m;++i)q[i].k=read(),q[i].l=read(),q[i].r=read(),q[i].x=read(),q[i].t=i;
sort(q+,q+m+,cmp);
for(i=;i<=m;++i)
{
while(l<q[i].l)change(l++);
while(l>q[i].l)change(--l);
while(r<q[i].r)change(++r);
while(r>q[i].r)change(r--);
if(q[i].k==)ans[q[i].t]=(s1&(s1<<q[i].x)).count();
if(q[i].k==)ans[q[i].t]=(s2&(s1<<MN-q[i].x)).count();
if(q[i].k==)for(j=;j*j<=MN;++j)ans[q[i].t]|=q[i].x%j==&&s1[j]&&s1[q[i].x/j];
}
for(i=;i<=m;++i)puts(ans[i]?"yuno":"yumi");
}
[BZOJ]4810: [Ynoi2017]由乃的玉米田的更多相关文章
- BZOJ 4810 [Ynoi2017]由乃的玉米田 (莫队 + bitset)
题目链接 BZOJ 4810 首先对询问离线, 莫队算法处理. 首先我们可以用bitset维护处当前区间中是否存在某个数. 对于询问1, 我们可以用 ((f >> q[i].x) &am ...
- BZOJ 4810 [Ynoi2017]由乃的玉米田(莫队+bitset)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4810 [题目大意] 给出一个数列,有三种区间查询, 分别查询区间是否存在两个数乘积为x ...
- BZOJ 4810 [Ynoi2017]由乃的玉米田 ——Bitset 莫队算法
加法和减法的操作都能想到Bitset. 然后发现乘法比较难办,反正复杂度已经是$O(n\log{n})$了 枚举因数也不能更差了,直接枚举就好了. #include <map> #incl ...
- 【BZOJ】 4810: [Ynoi2017]由乃的玉米田
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4810 思路还是比较显然,第一反应应该就是莫队. 考虑怎么维护三个询问,想到了要维护每一个数 ...
- LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田
题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\ ...
- bzoj4810 [Ynoi2017]由乃的玉米田 bitset优化+暴力+莫队
[Ynoi2017]由乃的玉米田 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 917 Solved: 447[Submit][Status][Di ...
- 【BZOJ4810】[Ynoi2017]由乃的玉米田 bitset+莫队
[BZOJ4810][Ynoi2017]由乃的玉米田 Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.由乃认为玉米田不美,所 ...
- bzoj 3594: [Scoi2014]方伯伯的玉米田 dp树状数组优化
3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 314 Solved: 132[Submit][Sta ...
- bzoj4810 [Ynoi2017]由乃的玉米田
Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一 ...
随机推荐
- Beta冲刺-用户测试报告
一.项目概述 1.1项目名称 高校学生征信系统 1.2项目简介 此项目基于SSH框架,力图为学生提供征信服务和信用相关的借款和申请活动.其中以信用统计和管理为主,信用使用为辅,构建出一个集信用收集和使 ...
- 学号:201621123032 《Java程序设计》第2周学习总结
1: 本周学习总结 本周学习java的数据类型,两种数据类型:基本数据类型和引用数据类型. 学习关于String和StringBuilder之间不同. 本周还学习数组.一维数组,多维数组,和动态数组. ...
- Codeforces 240 F. TorCoder
F. TorCoder time limit per test 3 seconds memory limit per test 256 megabytes input input.txt output ...
- Python内置函数(56)——locals
英文文档: locals() Update and return a dictionary representing the current local symbol table. Free var ...
- 云计算学习(5-1)云平台产品介绍-华为的FusionCloud产品
FusionSphere云平台:继承了虚拟化和云管理系统,为企业构建私有云 FusionManager:云管理平台(管理计算虚拟化.网络虚拟化.存储虚拟化) FusionCompute.Fusion ...
- MongoDB GridFS 存储大文件
我们经常会遇到这样的场景:上传/下载文件. 有两种思路可以解决这个问题: (1)将文件存储在服务器的文件系统中: (2)将文件存储在数据库中. 如果我们选择(2),那么我们可以使用MongoDB Gr ...
- JavaScript实现接口的三种经典方式
/* 接口:提供一种说明一个对象应该有哪些方法的手段 js中有三种方式实现接口: 1 注释描述接口 2 属性检测接口 3 鸭式辨型接口 */ /* 1 注释描述接口: 不推荐 优点: 利用注解,给出参 ...
- nexus私服服务器意外关机后,本地不能下载jar包
主要记录一个小问题. 今天要做个需求,需要读取word文档中的表格来在生成数据库建表语句. 读取word文档,要添加maven依赖 <dependency> <groupId> ...
- Python入门之函数的装饰器
本章目录: 装饰器: 一.为什么要用装饰器 二.什么是装饰器 三.无参装饰器 四.装饰器语法糖 五.认证装饰器实现 六.叠加多个装饰器 七.带参装饰器 ======================== ...
- 南京邮电大学java程序设计作业在线编程第四次作业
王利国的的 "Java语言程序设计第4次作业(2018)" 详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:40 1.下列方法定义中,正确的是() A.doub ...