看了标程的压位,才知道压位也能很容易写- -

/*
HDU 6085 - Rikka with Candies [ 压位 ] | 2017 Multi-University Training Contest 5
题意:
给定 A[N], B[N], Q 个 k
对于每个k, 求 A[i] % B[j] == k 的 (i,j)对数
限制 N, Q <=50000
分析:
对于每个 B[i] 按其倍数分块,则对于 A[j] ∈ [x*B[i],(x+1)*B[i]) , A[j]%B[i] = A[j] - x*B[i]
故事先将A数组处理成权值数组
枚举B[i] 和 B[i] 的每一个分块,将每个分块 [x*B[i],(x+1)*B[i]) 的值合并到 ans 的 [0, B[i]) 中
复杂度 O(n^2)
对数组进行压位,压32位,这样合并起来快 对 l = x*B[i], r = (x+1)*B[i] 进行合并时,若l,r不为32的倍数,就非常麻烦
所以开32个压位数组,第i个数组存 l+i,这样就有一个数组满足 (l+i) % 32 == 0,容易合并
(r-l)% 32 != 0 时,多余的那部分手动合并
*/
#include <bits/stdc++.h>
using namespace std;
unsigned int a[32][10005], ans[10005];
void Set(unsigned int a[], int x)
{
a[x>>5] ^= 1<<(x&31);
}
bool Get(unsigned int a[], int x)
{
return a[x>>5] & (1<<(x&31));
}
void solve(int l, int r)
{
while ((r-l)&31)
{
r--;
if (Get(a[0], r)) Set(ans, r-l);
}
int m = 0;
while (l&31) l++, r++, m++;
l >>= 5, r >>= 5;
for (int i = l; i < r; i++)
ans[i-l] ^= a[m][i];
}
int t, n, m, q, Max;
int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d%d%d", &n, &m, &q);
memset(a, 0, sizeof(a));
memset(ans, 0, sizeof(ans));
Max = 0;
while (n--)
{
int x; scanf("%d", &x);
Max = max(Max, x);
for (int i = 0; i < 32; i++) Set(a[i], x+i);
}
while (m--)
{
int b; scanf("%d", &b);
for (int i = 0; i <= Max; i += b)
solve(i, min(Max+1, i+b));
}
while (q--)
{
int k; scanf("%d", &k);
if (Get(ans, k)) puts("1");
else puts("0");
}
}
}

  

HDU 6085 - Rikka with Candies | 2017 Multi-University Training Contest 5的更多相关文章

  1. 2017多校第5场 HDU 6085 Rikka with Candies bitset

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6085 题意:存在两个长度为n,m的数组A,B.有q个询问,每个询问有一个数字k,可以得到Ai%Bj=k ...

  2. 2017ACM暑期多校联合训练 - Team 5 1001 HDU 6085 Rikka with Candies (模拟)

    题目链接 Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, s ...

  3. HDU 6085 Rikka with Candies(bitset)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6085 [题目大意] 给出一个数组a一个数组b,以及询问数组c, 问对于每个c有多少对a%b=c,答 ...

  4. hdu 6085 Rikka with Candies (set计数)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  5. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  6. HDU 6088 - Rikka with Rock-paper-scissors | 2017 Multi-University Training Contest 5

    思路和任意模数FFT模板都来自 这里 看了一晚上那篇<再探快速傅里叶变换>还是懵得不行,可能水平还没到- - 只能先存个模板了,这题单模数NTT跑了5.9s,没敢写三模数NTT,可能姿势太 ...

  7. HDU 6093 - Rikka with Number | 2017 Multi-University Training Contest 5

    JAVA+大数搞了一遍- - 不是很麻烦- - /* HDU 6093 - Rikka with Number [ 进制转换,康托展开,大数 ] | 2017 Multi-University Tra ...

  8. HDU 6162 - Ch’s gift | 2017 ZJUT Multi-University Training 9

    /* HDU 6162 - Ch’s gift [ LCA,线段树 ] | 2017 ZJUT Multi-University Training 9 题意: N节点的树,Q组询问 每次询问s,t两节 ...

  9. HDU 6090 Rikka with Graph —— 2017 Multi-University Training 5

    Rikka with Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

随机推荐

  1. [转帖]2019-03-26 发布 深入理解 MySQL ——锁、事务与并发控制

    深入理解 MySQL ——锁.事务与并发控制 https://segmentfault.com/a/1190000018658828 太长了 没看完.. 数据库 并发  mysql 639 次阅读   ...

  2. TP5.1框架中的模型关联

    一对一关联 hasOne('关联模型','外键','主键'); 关联模型(必须):关联的模型名或者类名 外键:默认的外键规则是当前模型名(不含命名空间,下同)+_id ,例如user_id 主键:当前 ...

  3. oracle杀死正在执行的进程

    1 查询目前正在执行的终端和进程, SELECT /*+ rule */ s.username,decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',NULL ...

  4. InnoDB 中的锁实现

    InnoDB 中的锁实现 原贴:InnoDB 锁系统及死锁检测实现分析 InnoDB 中,所有事务加的行锁通过一个全局的 hash 表 lock_sys 维护: /* The lock system ...

  5. 汉诺塔递推HDU2064

    题意: 移动木头盘不能a到c,必须a到b到c. 问你移动次数. 假设将n层塔从A经B挪到C需要f[n]步.那么具体的移动过程可以这样看:将上面n-1层从A经B挪到C需要f[n-1]步,再将第n层从A挪 ...

  6. Django新手入门必看

    pip install django==2.1.7 (现在Django3.0出来,推荐大家可以使用一下Django3.0) pip list查看

  7. python爬取网页数据并存储到mysql数据库

    #python 3.5 from urllib.request import urlopen from urllib.request import urlretrieve from bs4 impor ...

  8. 第5章:Linux系统管理

    1.文件读写 1).Python内置的open函数 f = open('data.txt', 'w') f.write('hello, world') f.close() 2).避免文件句柄泄露 tr ...

  9. hdu 1305 还是字典树

    #include<cstdio> #include<iostream> #include<string> #include<cstdlib> #defi ...

  10. Skywalking的增强与拦截机制

    整理自架构经理(汤哥)的分享 字节增强条件匹配 在 skywalking 中实现很多基于 byte-buddy 的关于链式匹配查询的实现, 代码如下所示: public abstract class ...