数组元素循环右移问题题目描述一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A(0),A(1),…,A(N-1))变换为(A(N-M),…,A(N-1),A(0),A(1),…,A(N-M-1))(最后M个数循环移至最前面 ...
PAT乙级1007 || 素数对猜想(详解,C/C++示例,测试点分析)
素数对猜想题目描述让我们定义$d_n$为:$d_n$=p(n+1)-p(n),其中p(i)是第 $i$ 个素数。显然有$d_1$=1,且对于 $n>1$ 有$d_n$是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<$10^5$),请计算不超过N的满足猜 ...
PAT乙级1006 || 换个格式输出整数(详解,C/C++示例,测试点分析)
换个格式输出整数题目描述让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。 输入格式输入 ...
PAT乙级1005 || 继续(3n+1)猜想(详解,C/C++示例,测试点分析)
继续(3n+1)猜想题目描述卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 ...
C++读取fvecs格式数据(SIFT1M数据集的结构)
引言sift1M是一个近似最近邻搜索(ANNS)的数据集,它可用于评估ANNS的性能。它包含3个向量子集,分别为: 基矢量:执行搜索的矢量 查询向量 学习向量:查找特定方法中涉及的参数 此外,它以预先计算的k个最近邻居及其平方欧式距离的形式为每个集合提供真值。每个向量取 $ 4+d\times ...
C++读取ivecs格式数据
引言近似最近邻搜索中通常会涉及到fvecs和ivecs格式的数据,其中,原始数据一般为fvecs格式的数据,查询结果一般为ivecs格式的。ivecs内部存储的主要是数据的id,数据类型为unsigned类型。就其内部数据结构而言,行数为查询点的个数,列数为对每个查询点查询返回个数再加1,因为每行的 ...
量化编码的分层可通航小世界图(HNSW)笔记
引言两种改进方法HNSW内存开销大,基于量化编码的检索算法能够压缩数据集向量,大幅度降低内存占用。将量化编码与HNSW结合,有两种改进方法: 使用标量量化编码向量的HNSWSQ算法 使用乘积量化编码向量的HNSWPQ算法 HNSW内存开销大的原因 需要存储全部的数据集元素 需要存储每一层中节点之 ...
PAT乙级1004 || 成绩排名(详解,C/C++示例,测试点分析)
成绩排名题目描述读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩... ... ...第 n+1 ...
PAT乙级1003 || 我要通过!(详解,C/C++示例,测试点分析)
我要通过!题目描述“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是: 字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符; 任意形如 xP ...