http://www.lydsy.com/JudgeOnline/problem.php?id=4810

问题就在于怎么快速查询
我们先用莫队转移,但是没办法快速地查询,那么我们就用bitset这个东西快速查询。
cnt是一个权值数组,记录每个数出现次数,a,c是两个bitset
减法:a[i]-a[j]=x那么我们把a<<x&a看是否出现1,有1就说明可以
加法:a[i]+a[j]=x我们发现没办法向上面那个样子直接搞,但是我们可以把加法转换成减法。我们化简一下式子:a[i]=x-c+c-a[j] c是一个a中最大的数
那么我们就搞出了减法a[i]=(x-c)+c-a[j] a<<(x-c)&c
乘法:枚举每个因数是否存在。
#include<bits/stdc++.h>
using namespace std;
const int N = , MAX = ;
struct query {
int type, l, r, x, block, id;
} q[N];
bitset<N> a, c;
int n, m;
int cnt[N], x[N], ans[N];
inline int read()
{
int x = , f = ; char c = getchar();
while(c < '' || c > '') { if(c == '-') f = -; c = getchar(); }
while(c >= '' && c <= '') { x = x * + c - ''; c = getchar(); }
return x * f;
}
bool cp(query i, query j) { return i.block == j.block ? i.r < j.r : i.block < j.block; }
void add(int pos)
{
if(!cnt[x[pos]])
{
a[x[pos]] = ;
c[MAX - x[pos]] = ;
}
++cnt[x[pos]];
}
void del(int pos)
{
if(cnt[x[pos]] == )
{
a[x[pos]] = ;
c[MAX - x[pos]] = ;
}
--cnt[x[pos]];
}
int query(int type, int x)
{
if(type == ) // 减法 如果a >> x & a == 1 那么就是有
return (a & (a << x)).any();
if(type == )
return (c & (a << (MAX - x))).any();
for(int i = ; i * i <= x; ++i) if(x % i == && cnt[i] && cnt[x / i]) return ;
return ;
}
void solve()
{
int l = , r = ; add();
for(int i = ; i <= m; ++i)
{
while(l < q[i].l) {
del(l); ++l;
}
while(l > q[i].l) {
--l; add(l);
}
while(r < q[i].r) {
++r; add(r);
}
while(r > q[i].r) {
del(r); --r;
}
ans[q[i].id] = query(q[i].type, q[i].x);
}
for(int i = ; i <= m; ++i) puts(ans[i] == ? "yuno" : "yumi");
}
int main()
{
n = read(); m =read();
for(int i = ; i <= n; ++i) x[i] = read();
int block = sqrt(n);
for(int i = ; i <= m; ++i)
{
q[i].type = read(); q[i].l = read(); q[i].r = read(); q[i].x = read();
q[i].block = (q[i].l - ) / block; q[i].id = i;
}
sort(q + , q + m + , cp);
solve();
return ;
}
 

bzoj4810的更多相关文章

  1. BZOJ4810 Ynoi2017由乃的玉米田(莫队+bitset)

    多组询问不强制在线,那么考虑莫队.bitset维护当前区间出现了哪些数,数组记录每个数的出现次数以维护bitset.对于乘法,显然应有一个根号范围内的因子,暴力枚举即可.对于减法,a[i]-a[j]= ...

  2. 【BZOJ4810】[Ynoi2017]由乃的玉米田 bitset+莫队

    [BZOJ4810][Ynoi2017]由乃的玉米田 Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.由乃认为玉米田不美,所 ...

  3. bzoj4810 [Ynoi2017]由乃的玉米田

    Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一 ...

  4. LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田

    题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\ ...

  5. BZOJ4810:[YNOI2017]由乃的玉米田(莫队,bitset)

    Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题   这个题是这样的: 给你一 ...

  6. 【bzoj4810】【ynoi2018】由乃的玉米田

    4810: [Ynoi2017]由乃的玉米田 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 1090  Solved: 524[Submit][Sta ...

  7. bzoj4810 [Ynoi2017]由乃的玉米田 bitset优化+暴力+莫队

    [Ynoi2017]由乃的玉米田 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 917  Solved: 447[Submit][Status][Di ...

  8. 【bzoj4810】由乃的玉米田

    lxl丧心病狂-- 首先允许离线的区间询问一看就是莫队.那么我们看下怎么莫队? 不会. "由乃题多半是不可做的."于是我看了下题解--好吧果然是bitset 用bitset维护当前 ...

  9. 【BZOJ4810】[YNOI2017] 由乃的玉米田(莫队+bitset)

    点此看题面 大致题意: 给你一段序列,每次询问一段区间内是否存在两个数的差或和或积为\(x\). 莫队算法 看到区间询问+可以离线,首先想到了莫队啊. 但是,在较短的时间内更新信息依然比较难以实现. ...

  10. 【bzoj4810】[Ynoi2017]由乃的玉米田 莫队算法+STL-bitset

    题目描述 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一个序列a,长度为n ...

随机推荐

  1. Django——分页功能Paginator

    Django分页功能----Paginator Paginator所需参数: Paginator(object_list,per_page) Paginator常用属性: per_page: 每页显示 ...

  2. STM32F407 正点原子 资料网址记录

    网络资源 资源下载: http://www.openedv.com/thread-13912-1-1.html (注意下载资料的版本!非常推荐腾讯视频,因为可以在线免费倍速播放.课件ppt可以单独下载 ...

  3. 完美解决了span的宽度设置

    下 面代码的CSS定义完美解决了span的宽度设置问题.由于浏览器通常对不支持的CSS属性采取忽略处理的态度,所以最好将display:inline -block行写在后面,这样在Firefox里面, ...

  4. 一个WebLoad 脚本范例

    //initial the Agenda function InitAgenda(){     wlGlobals.SaveHeaders = true;     wlGlobals.SaveSour ...

  5. [TyvjP1313] [NOIP2010初赛]烽火传递(单调队列 + DP)

    传送门 就是个单调队列+DP嘛. ——代码 #include <cstdio> ; , t = , ans = ~( << ); int q[MAXN], a[MAXN], f ...

  6. [运维]ELK实现日志监控告警

    https://blog.csdn.net/yeweiouyang/article/details/54948846

  7. Remove Duplicates from Sorted Array(参考)

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  8. sql语句执行的很慢

    一个 SQL 执行的很慢,我们要分两种情况讨论: 1.大多数情况下很正常,偶尔很慢,则有如下原因 (1).数据库在刷新脏页,例如 redo log 写满了需要同步到磁盘. (2).执行的时候,遇到锁, ...

  9. Spring在Java Filter注入Bean为Null的问题解决

    在Spring的自动注入中普通的POJO类都可以使用@Autowired进行自动注入,但是除了两类:Filter和Servlet无法使用自动注入属性.(因为这两个归Web容器管理)可以用init(集承 ...

  10. Servlet的过滤器(Filter)

    以下内容引用自http://wiki.jikexueyuan.com/project/servlet/writing-filters.html: Servlet过滤器是Java类,可用于Servlet ...