之前写过关于totp的文章,对它的基础有不清楚的同学,可以先看我的这篇文章《TOTP基础一》《TOTP基础二》 想到的问题 因为totp是把时间分成了一个一个小的时间窗口,当生成totp的服务器和校验totp的服务器不在一起时间窗口,就会出现验证失败的问题,这是不可避免的,时间戳是一个long类型的 ...
珂学家——珂朵莉树 学习笔记 珂朵莉树(Chtholly Tree),又名老司机树 ODT(Old Driver Tree)。 起源自 lxl 的 CF896C Willem, Chtholly and Seniorious。 前置知识:std::set。 思想 将区间用 set 维护,每次对一个区 ...
上一篇文末已经提到了记忆化搜索是动态规划(Dynamic Programming)的一种形式,是一种自顶向下(Top-Down)的思考方式;既然动态规划有自顶向下(Top-Down)的递归形式,自然想到对应的另外一种思考方式自底向上( Bottom-Up )。什么是自底向上的思考?不空谈理论... ...
base64 Base64 是一种用于将二进制数据编码成 ASCII 字符的编码方式。它主要用于在文字环境中传输或存储二进制数据,如在电子邮件、XML 文件、URL 参数等。Base64 编码不是一种加密算法,而是一种编码方式,其主要作用是将二进制数据转换为文本数据,以便更容易在文本协议中处理。 B ...
目录 1.什么是排序 2.关于堆排序的几个问题 3.问题求解首先:排序的定义 拿冒泡排序(递增)来讲,在一个给定的数组序列中,若A[i+1]<A[i],则将其两个的数值进行交换,排好序的序列应该是递增的,类似于[1,2,3,4,5...]; 所以排序是在数组中进行的,物理内存的数值发生了永久性的变化 ...
第八周 算法题解笔记 1极值点 题目描述 给定一个单峰函数f(x)和它的定义域,求它的极值点 该单峰函数f(x)保证定义域内有且只有一个极值点,且为极大值点 题解 本题感觉和dp关系不大,主要思路是三分法,和二分法非常类似,但没有二分法常用,主要用途是用来求单峰函数的极值 对于任意一个上凸函数,选取 ...
图论——最短路 学习笔记 其实是复习性质的,主要是总结,证明什么的,等上大学再说。 定义 单源最短路:从一个点 \(q\) 出发,到其他所有点的最短路。 全源最短路:任意两点见最短路。 算法对比 算法 Floyd Johnson Bellman–Ford SPFA Dijkstra 类型 全源 全源 ...
相信大家之前都了解过很多种数据结构,我之前总是两两的,也就是从局部上去进行比较,没有从整体上进行这些树的发展脉络进行梳理,因此经常看完没多久就忘了。看来确实是需要从本源出发,不仅要知其然还要知其所以然,了解清楚前因后果,不仅可以方便我们记忆,更有利于增加我们的理解深度。实际上任何事物的出现都是有他出... ...
题目描述 给你下列7种形状,问恰好填满 \(n*2\) 的方格有多少种方案(每种形状可任意旋转) 后三种形状纯粹是出题人的恶趣味,d用没有 做法一:暴力 不会 做法二:递推 定义: f[i] 为填满 \(i*2\) 的方格的方案数 g[i] 为填满 \(i*2\) 的方格 不能被腰斩 的方案数 解释 ...
A - Not Too Hard (abc328 A) 题目大意 给定\(n\)个数字和一个数 \(x\)。 问不大于 \(x\)的数的和。 解题思路 按找要求累计符合条件的数的和即可。 神奇的代码 #include <bits/stdc++.h> using namespace std; usin ...
大家都知道队列是可以用数组来模拟的,可以先开辟一段定长的数组空间,然后分别使用两个变量head和tail来代指队列的头和尾,从而维护整个队列,相信到这里大家都比较熟悉。不过这种做法是有弊端的,比如说下图这种情况 假设经过不断地增删元素,Head和Tail已经来到了数组最后两个位置,这时候整个队列中只 ...
为了更好的阅读体验,请点击这里 题目链接:G - Electric Circuit 看到了 \(N\) 的数据范围,因此是显然的状压 dp。 不妨设 \(f_S\) 为仅使用 \(S\) 集合中的所有点,能够连成恰好 \(1\) 个连通块的方案数。\(g_S\) 为仅使用 \(S\) 集合中的所有点 ...
前缀和 前缀和定义 对于数列A,它的前缀和数列S[i]就表示数列A从第一个元素到第i个元素的总和。 计算公式 // 前缀和数列S 原数列A S[i] = S[i - 1] + A[i]; //S[i - 1] 表示i-1个元素的和加上A[i],就构成了前i个元素的和S[i] 具体应用 前缀和的主要用 ...
2. 异或算法 2.1 异或基础 0^N == N N^N == 0; 记为无进位相加即可,1+1 = 0; 异或运算满足交换律和结合。 2.1.1 不用额外变量交换两个数 解法:aba = b,abb = a。 2.1.2 找出现奇数次的数 1. 题目 一个数组中有一种数出现了奇数次,其他数都 ...
有时我们需要求出一个范围内的质数,或者要计算一些积性函数的值,但往往题目无法承受直接判断质数、直接求函数值的时间复杂度,这时我们就可以用筛子了 ...
FHQ Treap,其中 FHQ 指范浩强神犇,是依赖于分裂合并操作实现的 Treap,这种操作方式使得它天生支持维护序列、可持久化等特性 ...
有关消防一题中最优解一定在直径上的证明 P2491 [SDOI2011] 消防 P1099 [NOIP2007 提高组] 树网的核 题目描述 在一颗 \(n\) 个节点的无根树中,找到一条不超过 \(s\) 的路径,使得图中所有点到此路径距离的最大值最小,图中边权非负 分析 若想将此题转化到树网的核 ...
问题描述 m台相同的机器,n个工件,每个工件有1道工序,可按照任意的工序为每个工件分配一台机器进行加工 工件 A B C D E F G H I 工件编号 0 1 2 3 4 5 6 7 8 加工时间 4 7 6 5 8 3 5 5 10 到达时间 3 2 4 5 3 2 1 8 6 交货期 10 ...
队列是一种基本的数据结构,用于在计算机科学和编程中管理数据的存储和访问。队列遵循先进先出(First In, First Out,FIFO)原则,即最早入队的元素首先出队。这种数据结构模拟了物理世界中的队列,如排队等待服务的人。 在本篇博客中,我们将详细介绍队列的概念、用途、实现以及如何在编程中使用 ...
原题链接:P9688 Colo. 很显然,能够共存的颜色一定不会相交,所以可以记录每个颜色最左边的位置和最右边的位置,我们对于每个颜色只考虑,这个颜色左边的可以和这个颜色共存的额颜色 用f[i][j]表示当前考虑i这种颜色,选i这种颜色,然后在i这种颜色之前(包括这种颜色)一共选了j种颜色的最大价值 ...