- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 算法中逐位统计的二进制思想
从数据范围我们可以看出,异或结果不会爆int,也就是在二进制中不会超过31位数,那么之后我们可以遍历31位,逐位统计该位上。首先看到区间异或计算,很容易想到我们可以用前缀和优化,因为异或计算具有可逆性,那么我们就可以把复杂度降低到。的子数组数量,最终累加所有位的贡献(其中涉及到位运算,这篇文章不做展开,但是这也是很重要的算法思想)。,但是显然对于1e5的数据范围依然过高,那么在这里我们需要用到。
2025-04-07 21:27:11
57
原创 (基础算法)二维差分,前缀和
对于二维前缀和不再过多接受,直接记根据容斥原理得到的公式或者对行先做前缀和,再对列进行前缀和得到都可以,由于差分是前缀和的逆运算,在二维里不容易想象,记公式容易和二维前缀和公式搞混,所以用下面的图和代码表示一种不用死记公式的方式。注意行与列差分的先后顺序,以免多减或者少减。思维扩展:用于贴邮票,铺地砖等类型的算法题。
2025-04-01 08:48:32
183
原创 AtCoder Beginner Contest 397 E题树的路径分解题解
给定一棵具有 N*K 个顶点无向树。顶点编号为 1,2,…,N*K-1,,…,N*K (则有N*K-1条边)确定此树是否可以分解为 N 条路径,每条路径的长度为 K。
2025-03-16 18:06:10
368
原创 AtCoder Beginner Contest 397 D题题解
寻找两个正整数x和y,使得x³ - y³ = N。若存在这样的x和y,则输出它们;否则输出-1。
2025-03-15 23:03:31
236
原创 atcoder beginner contest(abc 394)F题题解
首先我们要思考如何存储这个无向图,显然我们需要一个邻接表,我们想到用板子就行,但是这个邻接表不需要开next数组去连接,因为我们不需要去做增删查这些操作,是一个树状图,实现搜索只需要存每个节点的子节点是谁即可。,若小于3,则只选取一个节点数最多的子节点形成的树,以此类推,每次取用贪心策略更新以每个节点为根节点的符合要求的树中总的节点数,如果最后答案小于5则无解,因为这个图中要求至少有一个点的度数为4,否则输出答案。节点数最多的三个子节点形成的三个子树,一定最优。
2025-02-24 19:20:02
173
原创 atcoder beginner contest(abc 394)E题题解
题意题意题目意思并不难理解,其给出我们由n个点组成的有向图,并以一个矩阵的形式给出,在矩阵的第i行第j列为点i到j的有向边,若此两点之间有边,这两点之间的有向边用一个小写字母给出,若没有边,则为“-”, 要求我们找出任意两点间的最短回文路径(首先保证这条路径为回文路径,其次为这两点间的回文路径里最短的),以矩阵形式输出,若不存在则输出“-1”。
2025-02-23 21:29:37
351
原创 c++中#include <iomanip> 提供输入输出流格式化的功能
是 C++ 标准库中的一个头文件,它主要用于提供输入输出流格式化的功能。这个头文件包含了一些用于控制输入输出格式的工具,常见的功能包括设置浮点数的精度、宽度、对齐方式等。
2025-02-09 12:09:15
386
原创 c++中set的数据类型为pair时,利用lower_bound查找的用法
是用来寻找pair.first大于等于l的第一个元素。第二个元素-1的意义通常是为了处理pair.first相等时的特殊情况,它在比较过程中不会影响查找,只会在遇到相等时才可能起作用。pair遍历法:最简单的一种方法,就是遍历整个容器,查找第二个元素大于等于某个值的元素。自定义比较器:如果你希望更高效地进行查找,并且可以改变排序规则,可以使用自定义比较器对set或map进行排序,按第二个元素进行排序,然后使用进行查找。
2024-12-22 17:54:50
1443
原创 ATCoderABC383 C题总结
经典bfs,不过翻译过来题意要读顺,思路是将有加湿器的的地板同时放入队列,分别向各个方向移动加湿器,用dis数组记录每个地板为多少步移动到的(即地板与加湿器的距离), dis数组初始化为无穷大,以便记录对应空地板与最近加湿器的距离,最后遍历检测dis数组,在限定距离d内即为加湿器可以加湿到。(主要记录代码结构,比最开始一版效率优化很多)
2024-12-10 09:49:38
189
原创 逻辑运算(与门,或门,非门, 异或门)
门种类运算描述输出规则与门(AND)两输入都为 1 时输出为 1,否则输出为 0。1当且仅当 A 和 B 都是 1或门(OR)只要有一个输入为 1 输出就为 1,两个都为 0 时输出 0。1当 A 或 B 中至少有一个是 1非门(NOT)输入的反转,输入为 0 输出 1,输入为 1 输出 0。1当 A 为 0,0当 A 为 1异或门(XOR)两输入不同则输出 1,相同则输出 0。1当 A 和 B 不相同这些逻辑门是数字电路和计算机系统中的基本构件,用于构建各种复杂的逻辑操作。
2024-12-07 18:07:59
3611
原创 过河问题(贪心)
分析及整体思路题目简述:有n个人一条船,所有人要从左岸渡船到右岸,第i个人过河时间是ai。船上最多坐两个人,船从右岸回到左岸时必须保证船上有人。每次船的行驶时间等于船上两人中过河时间的较大值。问过河所需最短时间。
2024-12-07 15:58:00
355
原创 c++中c.back()和c.end()的区别
c.back()用于访问容器的最后一个元素。它返回对该元素的引用,可以修改该元素。使用场景:需要获取或修改容器最后一个元素时。注意:容器为空时不能调用c.back(),会导致未定义行为。c.end()用于获取指向容器末尾后一个位置的迭代器。通常用作遍历容器的结束标志。使用场景:用于容器遍历,作为结束条件。注意c.end()不能解引用,它并不指向容器中的任何元素。
2024-11-08 11:19:49
839
原创 C++中cin、cin.get()、cin.getline()、getline()、gets()的区别
C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法 - flatfoosie - 博客园
2024-11-08 11:17:09
118
原创 c++中字符串string知识点
在 C++ 中,如果你用类型来存储数字并进行比较,系统比较的是这两个字符串的字典顺序(lexicographical order),而不是数值大小。这意味着比较是按字符逐个进行的,类似于字典中单词的排列方式。
2024-10-28 20:50:10
324
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人