2017多校五 1001题 hdu 6085 Rikka with Candies 位运算 bitset

WRF和WPS模型在Ubuntu系统上的安装与常见问题解决指南 本文详细介绍了在Ubuntu系统上安装WRF和WPS模型的完整教程,涵盖系统环境配置、依赖库安装、源代码编译以及常见问题的解决方案。重点解决了WPS编译中intmath.f文件的修改、环境变量设置和编译器兼容性等关键难点,帮助用户高效部署气象研究与预报模型。 阅读详情

题目链接


题意:

给定 a 数组长度 n ,和 b 数组长度 m,与若干个询问 q,每次询问有多少组 (i, j) 满足 a[i] % b[j] == k.


官方题解:

考虑预处理出所有 kk 的答案,问题相当于一个模 22 意义下的 \text{mod}mod 卷积,即给出数组 A,BA,B,将 A_i \times B_jA​i​​×B​j​​ 累加到 w_{i\ \text{mod}\ j}w​i mod j​​ 上。

因为 i\ \text{mod}\ j=i-j\lfloor \frac{i}{j} \rfloori mod j=i−j⌊​j​​i​​⌋,因此可以枚举 jj 和 k=\lfloor \frac{i}{j} \rfloork=⌊​j​​i​​⌋。这时相当与把 AA 中区间 [kj,(k+1)j)[kj,(k+1)j)中的所有数依次加到 ww 的 [0,j)[0,j) 区间上。

因为模 22 意义下的加法可以用异或实现,因此可以用压位来优化,这样时间复杂度为 \sum_{i=1}^n \frac{n}{i} \times (32+\frac{i}{32})∑​i=1​n​​​i​​n​​×(32+​32​​i​​),这约是 \frac{n^2}{32}​32​​n​2​​​​。

注意因为 bitset 不支持提取区间操作,因此需要手写压位。如果不手写也可以用分块的方法来达到同样的复杂度但是常数比手写 bitset 大很多,可能需要一些常数优化才能通过时限。

然而手写压位什么的...0 0 标程写得太厉害了一时半会看不明白...等旅游回去定下心来看Orz

于是乎参考了众大神的 blog,发现分为两类,一类就是压位,另一类里面写得短而精炼。我便暂时就后者好好消化理解了一番。


考虑预处理出所有的 ans[k],因为每个算在 k 上面的答案,其来源只可能是 b 数组中 > k 的元素, 因此考虑从大到小枚举模数,这样每次算 k 时,所有对 k 有所影响的答案已经累计完毕。

事实上,计算是否有 a[i] % b[j] = k, 就相当于计算 a[i] - k 是否是 b[j] 的倍数;如果我们用一个数组 xx 将所有 b[j] 的倍数都标记为 1,则只要看 a[i] - k 的位置是否被标记为 1;再进一步,只要看 xx 数组移动 k 位 是否和 某些 a[ ] 相对应。

既然已经说到了 “移动” 和 “对应”,那么就和位运算挂上钩了,即 “左移” 和 “相与为1”。

用 aa 来将 a[ ] 的对应位 置1,那么上面描述的操作其实就是 (xx << k) & aa, 然后看得到的位串中有多少个 1,即为有多少对 (i, j), 

故 ((xx << i) & aa).count() & 1 即为 (i, j) 对的个数 % 2.

刚才讲的并不严谨,事实上,我们对 b[j] 的倍数进行的操作并不是将其对应位 置1,而是进行翻转,因为其影响可能和之前的相抵消,这一点也很好理解。

这样,大神们的程序就解读完了,实在是太太太精妙了Orz.

压位等我之后再认真学习一发再来补Orz.


Code:

#include <bits/stdc++.h>
#define maxn 50010
using namespace std;
bool ans[maxn], exist[maxn];
bitset<maxn> aa, xx;
inline int max(int a, int b) { return a > b ? a : b; }
void work() {
    int n, m, q;
    scanf("%d%d%d", &n, &m, &q);
    int ma = 0, mb = 0;
    aa.reset(); xx.reset();
    memset(exist, 0, sizeof(exist));
    for (int i = 0; i < n; ++i) {
        int x;
        scanf("%d", &x);
        aa.set(x);
        ma = max(ma, x);
    }
    for (int i = 0; i < m; ++i) {
        int x;
        scanf("%d", &x);
        mb = max(mb, x);
        exist[x] = true;
    }
    for (int i = mb; i >= 0; --i) {
        ans[i] = ((xx << i) & aa).count() & 1;
        if (exist[i]) {
            for (int j = 0; j <= ma; j += i) xx.flip(j);
        }
    }
    while (q--) {
        int x;
        scanf("%d", &x);
        printf("%d\n", ans[x]);
    }
}
int main() {
    int T;
    scanf("%d", &T);
    while (T--) work();
    return 0;
}


8、使用 TPCx - HCI 基准测试表征 HCI 集群的性能和弹性 本文详细介绍了 TPCx - HCI 基准测试,用于衡量超融合基础设施(HCI)集群的性能、稳定性和扩展性。TPCx - HCI 扩展了 TPCx - V 的理念,通过 Tile 架构和弹性特性,全面评估硬件、虚拟化、存储和网络组件的表现。文章还通过多个实验场景分析了负载均衡、数据布局和重新同步策略对性能的影响,并提出了部署和优化 HCI 集群的建议。 阅读详情

相关推荐

本地大模型5:在pycharm用python调用ollama本地大模型

python调用ollama本地大模型

weixin_74825941的博客 8377

2017多校联合第五场1001/hdu6085Rikka with Candies(bitset)

Rikka with Candies Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1389    Accepted Submission(s): 606 Problem Description As we kn

The_star_is_at的博客 911

[Unity_Plastic SCM小技巧] 使用 UnityYAMLMerge 工具合并场景和预制件文件

首先YAMLMerge工具其实并不局限于PlasticSCM,git也可以,它是内置在Editor内的一个更加智能的版本控制工具,只不过正常不会启用,他的目录在C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe(Unity Editor安装目录),MAC上:/Applications/Unity/Unity.app/Content...

unityofficial的博客 1145

【多校训练】hdu 6085 Rikka with Candies bitset

Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them: There are n children and m ki

弱菜zc 563

对工时评估的思考:当AI颠覆了coding效率

在AI时代,“人日”作为软件工时度量衡已然失效。开发的价值核心正从“编码实现”转向“深度思考”与“精准沟通”——即如何将人类的模糊需求精确地传达给AI。当最有价值的“思想工作”变得最难量化时,传统的项目管理范式随之动摇。我们必须超越对过程的算计,开始探索衡量思想、沟通与业务价值的新标尺。

架构师刘7的博客 1017

利用dxflib读写cad文件

本篇主要在qt做一个例子读取cad文件数据,使用的开源库是dxflib。用到dxflib的DL_CreationAdapter,DL_Dxf。DL_Dxf是用来读取.dxf文件的类,DL_CreatinAdapter是一个容器,当DL_Dxf加载.dxf文件后,就会响应DL_CreationAdapter这个类,读取cad数据。我们来看看...

weixin_33759269的博客 1984

HDU 6085 Rikka with Candies (bitset)

Rikka with CandiesHDU 6085 2017ACM暑期多校联合训练 - Team 5 1001 Rikka with Candies题目链接题目描述 As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to pract

南风古 329

ICC2: place阶段的clock network delay

设置了set_clock_latency之后,即便没长tree,也会有反标值,显示为clock network delay(ideal)和设置的clock latency值,需要注意的是同时设置set_clock_latency和set_clock_latency -source,clock network delay(ideal)值是二者叠加的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 316

Rikka with Candies(HDU6085) (bitset加速计数)

多校第五场的1001Rikka with Candies是一道大数据量的计数题。 题意:给定A,B两个序列,有q个询问,每个询问给出一个k,问对于每一k,有多少种情况满足ai % bj = k?A,B的元素个数数据量均为50000,询问次数也为50000 分析:题目时限是3500ms,也就是算法只能是常数很小的n*n的算法才能勉强过掉,所以只能用bitset来加速计数,同时为了加速,必须...

receiling的博客 352

【毕设实战】飞行器目标识别系统:基于YOLOv5的智能检测全流程教程,助你毕设脱颖而出

亲爱的同学,毕设是不是让你既期待创新又担心技术门槛?如果你的毕设方向是计算机视觉、智能检测,那这个绝对能成为你的“毕设王牌”。从数据准备到界面开发,我会把整个项目拆成“傻瓜式”步骤,让你能一步步做出属于自己的毕设成果。

know_F0727的博客 104

9、眼底图像智能分析:糖尿病视网膜病变的自动化识别与分级系统

本博客介绍了一种基于深度学习的糖尿病视网膜病变(DR)自动化识别与分级系统。该系统通过视网膜图像的预处理、数据增强、集成模型的构建与优化,实现了对DR的高效识别与分级。识别系统采用二分类任务,准确率达到97.67%,而分级系统通过四分类策略取得了95.2%的准确率。系统在基层社区和医院中具有广泛的应用前景,为DR的早期筛查和精准诊断提供了有效工具。

pea55的博客 144

hdu 6085 Rikka with Candies(bitset 计数原理)

Rikka with Candies Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1237    Accepted Submission(s): 542 Problem Description As we kn

MR CODER 857

基于Simulink与MATLAB的七轴OpenArm机械臂逆运动学仿真与轨迹规划完整指南

本文详细介绍了七自由度OpenArm机械臂在MATLAB/Simulink环境下的运动学仿真与轨迹规划实现方法。首先建立了机械臂的DH参数模型,验证了正运动学计算;随后提出了两种逆运动学求解算法(数值迭代法和臂型角参数化解析法)的MATLAB实现方案;最后在Simulink中搭建了完整的轨迹规划与控制系统。研究解决了七自由度冗余机械臂特有的多解性、奇异性和关节限位约束等核心问题,为OpenArm机械臂的运动控制提供了完整的技术方案和可运行代码实现。

AI的内部世界的博客 681

2017多校训练Contest5: 1001 Rikka with Candies hdu6085

Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them: There are n children and m ki

lqybzx的专栏 425

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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, so he gives Rikka some math tasks to practice. There is one of them: There are n children and m kinds...

weixin_30912051的博客 144

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

2017多校六 1002题 hdu 6097 Mindis 相似三角形 计算几何

题目链接 题意: 圆心 O 坐标(0, 0), 给定两点 P, Q(不在圆外),满足 PO = QO, 要在圆上找一点 D,使得 PD + QD 取到最小值。 官方题解: 做P点关于圆的反演点P',OPD与ODP'相似,相似比是|OP| : r。 Q点同理。 极小化PD+QD可以转化为极小化P'D+Q'D。 当P'Q'与圆有交点时,答案为两点距离

kkkkahlua的博客 1668

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2017多校联合第三场 1005题 hdu 6060 RXD and dividing (超详细!!!)构造

题目链接 题意: 给定一棵 n 个节点的树,1 为根。现要将节点 2 ~ n 划分为 k 块,使得每一块与 根节点 形成的最小斯坦纳树的 边权值 总和最大。 看了题解之后的思考: 题解是:记有向边 (u, v) 长度为 w[v],以点 v 为根的子树的节点总数为 sz[v],那么答案就是 w[v] * min(sz[v], k) 对每个点求个和。 题解的说法是:可以通过构

kkkkahlua的博客 1071

HDU 3336 Count the string 所有前缀在串中的出现总次数

题目链接题意给定一个串 SS,求其所有前缀在其中的出现次数的总和。思路考虑 failfail 数组,fail[i]=jfail[i] = j 的含义是 S[0..j−1]==S[i−j..i−1]S[0..j-1] == S[i-j..i-1].记 dp[i]dp[i] 为以 ii 结尾的串中与前缀相同的串的个数。由 fail[i]=jfail[i] = j 有 S[0..j−1]==S[i−j..

kkkkahlua的博客 996

2017多校联合第二场 1009题 hdu 6053 TrickGCD (超详细!!!)莫比乌斯 容斥

题目链接 题意: Problem Description You are given an array A , and Zhu wants to know there are how many different array B satisfy the following conditions? * 1≤Bi≤Ai * For each pair( l ,

kkkkahlua的博客 898

2017多校八 1002题 hdu 6134 Battlestation Operational 艾弗森约定 莫比乌斯函数 分块

题目链接 题意: Your should calculate the total damage to the battlefield. Formally, you should compute f(n)=∑i=1n∑j=1i⌈ij⌉[(i,j)=1], where [(i,j)=1] evaluates to be 1 if gcd(i,j)=1,

kkkkahlua的博客 832

2017多校联合第一场 1006题 hdu 6038 Function 循环节

题目链接 题意: Please calculate the quantity of different functions f satisfying that f(i)=bf(ai) for each i from 0 to n−1. (嗯...就是这样) 思路: 首先可以将 a 数组划分成若干个循环节,每个节是相互独立的,取其中一个节来看,令其长度为 l

kkkkahlua的博客 805

2017多校四 1003题 hdu 6069 Counting Divisors 分解质因数

题目链接 参考:http://blog.youkuaiyun.com/protecteyesight/article/details/76685920  ——protecteyesight 题意: Problem Description In mathematics, the function d(n) denotes the number of divisors o

kkkkahlua的博客 689

2017多校九 05题 hdu 6165 FFF at Valentine 缩点 dp找最长链/拓扑排序

题目链接题意判定一个图是不是单向连通图。 // 其实就是poj 2186,不过poj的那道题数据水了些= = // 浏览题目时看成了FFT at Valentine吓死我= =思路先套路一发,tarjan求强联通分量,缩点,至此预处理完成。(这部分详细内容烦请移步本菜另一篇 强联通分量 缩点 tarjan 入门题小集) 然后怎么处理呢?法一现在我们得到了一个DAGDAG,直观想法就是有没有

kkkkahlua的博客 668

2017多校九 01题 HDU6161 Big binary tree 树形dp+hash

题目链接题意有一棵 nn (n≤1e8n\leq 1e8)个节点的完全二叉树,节点 ii 的父亲节点是 ⌊i2⌋\lfloor\frac{i}{2}\rfloor。初始时每个点的权值都是它本身。现有两种操作 mm 次(m≤1e5m\leq 1e5): 修改某个点的权值 询问 经过某个点的 权值和最大的 链 的权值和 思路dp[ ]dp[\ ] 记录从某个点向下走最长的链的权值和,修改即一路向上更新

kkkkahlua的博客 647

2017多校四 1005题 hdu 6071 Lazy Running 同余类 最短路

题目链接 题意: 给定一个环上的四个点1,2,3,4,距离分别为d12,d23,d34,d41,要求从2号点出发,最后回到2号点,要求经过的距离为大于等于 K 的最小值,求该最小值。 参考: 1. http://blog.youkuaiyun.com/blessLZH0108/article/details/76690027?locationNum=6&fps=1  ——Alzh

kkkkahlua的博客 638

2017多校联合第二场 1003题 hdu 6047 Maximum Sequence O(n) (有理有据地)贪心

题目链接 题意: an 和 bn 是两个长度为 n 的序列,其中保证 1 现要求根据 bn 来补全 an+1 ~ a2n 的数字,要求这一段和最大, 补全规则如下: 补 ai 时,从 bn 中不重复地挑选一个数字 bk, 要求 ai 思路: 我们看补全规则,就是在说从 ai 中下标为 bk 的地方起一直向后到现有的最后一个位置中,找一个 aj - j 的最大值

kkkkahlua的博客 630
上一篇: poj 2566 Bound Found 尺取法 / lower_bound
下一篇: 2017多校六 1008题 hdu 6103 Kirinriki 尺取法
kkkkahlua
博客等级 码龄12年 4粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值