摘要:
Paillier 半同态加密系统详解及C++实现 Paillier 半同态加密系统详解及C++实现 一、Paillier 同态加密算法 1.1 基本概念 1.2 算法思路 1.3 加解密过程 密钥生成 KeyGeneration 加密 Encryption 解密 Decryption 二、C++实现 阅读全文
摘要:
数论基础 Dan Boneh课程中数论基础笔记,该部分内容用于构建以下密码学相关部分: Key Exchange Protocols Digital Signatures Public-Key Encryption Notation (Greek times) 本文中,$N$ 指代一个正整数,$p$ 阅读全文
摘要:
g++ 参数解释 在编译一些项目的时候可以-W和-Wall选项一起使用。 -W : 编译后显示所有警告 -Wall : 类似-Wall,会显示警告,但是只显示编译器认为会出现错误的警告 阅读全文
摘要:
时空复杂度分析 一般笔试题的时间限制是1秒或2秒。而 C++ 一秒之内能够计算 $10^7 \sim 10^8$ 次。 下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择: $n \le 30$, 指数级别, dfs+剪枝,状态压缩dp $n \le 100$ => $O(n^3)$O,fl 阅读全文
摘要:
绝对值不等式 题目链接:AcWing 104. 货仓选址 $$ \begin{align*} f(x) &= \lvert x_1 - x \rvert + \lvert x_2 - x \rvert + \cdots + \lvert x_n - x \rvert \ &= ( \lvert x_ 阅读全文
摘要:
推公式 题目链接:AcWing 125. 耍杂技的牛 先给出结论: 按照W[i]+S[i]从小到大的顺序排,最大的危险系数一定是最小的。 证明思路: 贪心得到的答案 $\ge$ 最优解 贪心得到的答案 $\le$ 最优解 #include <iostream> #include <algorithm 阅读全文
摘要:
排序不等式 题目链接:AcWing 913. 排队打水 让最磨叽的人最后打水。 如图所示,第一个同学被等了6次,第二个同学被等了5次,以此类推... $$ 总时间 = t_1 \times (n-1) + t_2 \times (n-2) + t_3 \times (n-3) + \cdots $$ 阅读全文
摘要:
Huffman树 题目链接:AcWing 148. 合并果子 利用贪心的思想,每次从当前所有堆中,挑出最小的两堆合并即可。 #include <iostream> #include <algorithm> #include <queue> using namespace std; int main( 阅读全文
摘要:
区间问题 区间问题 1. 区间选点 2. 最大不相交区间数量 3. 区间分组 4. 区间覆盖 区间选点 题目链接:AcWing 905. 区间选点 题目描述 给定 $N$ 个闭区间 $[a_i,b_i]$,请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位 阅读全文
摘要:
记忆化搜索 题目链接:AcWing 901. 滑雪 题目描述 给定一个 $R$ 行 $C$ 列的矩阵,表示一个矩形网格滑雪场。 矩阵中第 $i$ 行第 $j$ 列的点表示滑雪场的第 $i$ 行第 $j$ 列区域的高度。 一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离 阅读全文