博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 6085 - Rikka with Candies | 2017 Multi-University Training Contest 5
阅读量:5905 次
发布时间:2019-06-19

本文共 1673 字,大约阅读时间需要 5 分钟。

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

/*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 
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"); } }}

  

转载于:https://www.cnblogs.com/nicetomeetu/p/7310593.html

你可能感兴趣的文章
SDUT 3340 数据结构实验之二叉树一:树的同构
查看>>
yiilite.php,YII Framework学习教程-YII的V-view的render若干函数-2011-11-17 | 学步园
查看>>
cm hue 无法连接mysql,hue查询hive连接数升高,之后无法继续提交查询
查看>>
java 项目 人力资源项目,基于jsp的人力资源系统-JavaEE实现人力资源系统 - java项目源码...
查看>>
php阿拉伯语字符串,按字母顺序命名阿拉伯语名称Mysql和php
查看>>
matlab最佳拟合的指标是什么意思,Matlab拟合好坏常用指标
查看>>
matlab保存并关闭excel文件夹,[转载]Matlab批量操作目标文件夹下的Excel文件
查看>>
matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数
查看>>
错误请联系管理员文件 index.php,帝国CMS订单、反馈信息、投稿与留言发邮件通知管理员的方法...
查看>>
小米笔记本装linux教程视频教程,Archlinux安装指南~小米笔记本Air 13.3英寸版本
查看>>
linux卸载nomachine,NoMachine 安装与配置及使用
查看>>
c语言入门经典第五版自学,Beginning C, 5th Edition(2013)[C语言入门经典 第5版
查看>>
angularjs html 缓存,如何删除使用AngularJS的HTML中的浏览器缓存?
查看>>
dede列表页if判断输出html,首页、列表页调用文章body内容的两种方法
查看>>
IT人士还是要善待自己
查看>>
复制或保存结果时包括列标题
查看>>
Forefront_TMG_2010-TMG发布Web服务器
查看>>
演示:在windows不同版本操作系统的计算机上安装IPv6协议与基本配置
查看>>
企业shell常见面试题及企业实战案例深入浅出讲解
查看>>
Load Test
查看>>