- 博客(38)
- 收藏
- 关注
原创 CUDA指南-CUDA简介与开发环境搭建
CUDA(Compute Unified Device Architecture)是由NVIDIA开发的并行计算平台和编程模型,它允许开发者利用NVIDIA GPU进行高效的通用计算任务。
2024-08-23 23:10:33
2605
原创 C++ 指南- 异常的处理
自定义异常是通过继承自 std::exception 或其子类来创建的。这允许你添加额外的状态或行为到异常处理中。定义自定义异常类private:public:使用自定义异常try {// 某个条件满足时抛出自定义异常// 处理其他标准异常注意事项异常安全性:确保异常不会破坏程序的状态。使用RAII(资源获取即初始化)模式管理资源。异常传播:通常,异常应该向上传播到能够适当处理它们的地方。避免类型转换:不要在 catch 块中进行类型转换,这可能隐藏错误。
2024-08-22 22:00:22
994
原创 C++入门指南-Hello World
C++是一种通用的、过程化的、面向对象的、多范式编程语言,由Bjarne Stroustrup在20世纪70年代末期作为C语言的扩展开发而成。C++最初被称为"C with classes",因为它引入了类的概念,这是面向对象编程的基础。随着时间的发展,C++语言不断扩展和改进,增加了更多的特性和功能。1985年,C++的第一个正式标准发布,被称为ANSI C++。随后,C++语言经历了多个版本的迭代,包括C++98、C++03、C++11、C++14、C++17和最新的C++20。
2024-08-15 10:36:28
473
原创 (文末有模板)背包问题(超级硬核)
有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。f[j]表示背包容量为j时,能装入的最大价值。状态转移方程:对于每个物品i,考虑是否放入背包中。若不放入,则总价值不变;若放入,则总价值为f[j-v[i]] + w[i](在当前容量下,放入物品i后的总价值)。因此,状态转移方程为f[j] = max(f[j], f[j-v[i]] + w[i])。
2024-08-15 10:19:33
2194
2
原创 NIM游戏讲解(超级全面,SG函数代码模板,三种题型)
Nim 游戏n堆物品,每堆有m 个,两个玩家轮流取走任意一堆的任意个物品,但不能不取。取走最后一个物品的人获胜。我们先来看第一道题目题目一:给定n堆石子,两个玩家轮流操作,每次可以从任意一堆石子中拿走任意数量的石子,可以拿完但不能不拿。无法操作者视为失败。问先手是否存在必胜策略。输入格式:第一行包含整数n。第二行包含n个数字,其中第i个数字表示第i堆石子的数量。输出格式:如果先手方必胜,则输出“Yes”。Nim游戏模型,有个结论,设每堆石子个数分别是。NI
2024-08-15 09:34:37
1131
原创 HTML文件转pdf的方法(绝对有手就行)
因为看大部分文章写的都是去找网站,问题是,网站要么收费要么贼慢。Edge浏览器和Chrome浏览器都可以。
2024-08-15 09:27:04
478
原创 求组合数的4类题型(看这一篇就够了)
我们都知道组合数的公式是:看起来直接写程序也是挺简单的。但是我们能想出两个问题,溢出怎么办?速度慢怎么办?
2024-08-13 20:16:19
1570
原创 AcWing 204 表达整数的奇怪方式
是不是感觉很熟悉,合并两个同余方程,居然可以用拓展欧几里得算法来解。,mn,求一个最小的非负整数x,满足∀i∈[1,n],x≡mi(mod ai)。输出最小非负整数x,如果x不存在,则输出-1。如果存在x,则数据保证x一定在64位整数范围内。我们都会解多元一次方程,不断进行方程的合并即可。但是不能只改m,还需要改a,a怎么改呢,我们观察到最后x那一块里面有。那现在我们关心的是,这两个方程合并之后的方程能咋表示呢?那我们能用类似的思路来做这个同余方程嘛。一定是正数,所以我们要求最小的m1,就一定要让之前的。
2024-08-13 19:37:45
452
原创 BUG先除再乘与先乘再除结果不一样
注意,如果你确定你的除法一定能够整除,你可以调换乘除次序来防止乘法的溢出,但是如果不能整除你调换了,那么你会得到一个非常难察觉的bug。
2024-08-13 09:47:26
510
原创 拓展欧几里得算法-数论代码笔记(超级细节)
我们知道欧几里得算法是用来求解最大公约数的,那么拓展欧几里得算法是用来干嘛的呢?先给个题:给定,求一组,使得你可能很好奇这有什么用呢?别急,先听我把这个介绍完,然后我会介绍它的两个应用,分别是解线性方程与解一次同余方程。回到。
2024-08-13 07:00:00
443
原创 快速幂章-数论代码笔记
只写关键点:以5的35次方为例,base = 5, power = 35;power的二进制表示为 100011那么因为所以我们每次移动都用位运算算一位就可以,然后更新ans, 更新base。
2024-08-13 06:30:00
617
原创 欧拉函数章-数论代码笔记(超级细节)
同样的,类似于质数,我们有判断一个数是不是质数,筛一个范围内的质数的方法,我们也有判断一个 数是不是欧拉函数,计算一个范围内的欧拉函数的方法。好了,让我们进入正题。
2024-08-12 16:24:52
498
原创 约数章-数论代码笔记(超级细节)
试除法求所有约数注意边界条件,求约数是从1开始,到x / i,如果是求质数,那就是从2开始,到x / i,如果不理解什么意思可以看看我之前的博客。而且约数是成对出现的,如果i是约数,那么x / i也是约数,在 i!= x / i的条件下可以放入vector中。最后排序纯粹是题目要求。
2024-08-12 11:33:39
442
原创 质数章-数论代码笔记(超级细节)
注意末尾(注:这是因为如果x有一个大于 x / 2的因子,那么一定只有一个)判断下 x > 1(这里写成>1是为了方便,事实上,为了容易理解,我们可以在一开始保存n = x, 经过for循环之后判断 x >= n / 2 就可以。由于我们是从小到大遍历,当遍历到一个数时,如果它没被标记,说明它一定不能被小于它的质数分解,那么它也一定是质数。注意这里为什么不用判断i是不是质数,因为如果x % i == 0,假设这里的i不是质数,那么i一定能表示成 i = a * b的形式,这里的a或b一定有一个小于i的,
2024-08-12 10:16:52
1890
原创 (渣男)匈牙利算法(绝对通俗易懂)
先来先得,能让就让想象一下有一堆男生和一堆女生,每个人都有心动的TA,我们作为一个月老,想让整体最优化,让最多的大汉能找到女朋友。这时我们就可以使用匈牙利算法。
2024-08-11 22:08:53
196
原创 Java进阶指南:JVM核心知识1.2类加载器
本系列主要针对想进一步进阶Java的开发者,本文介绍Java的类加载器,这对于排查找不到jar包的问题是非常有用的
2023-02-26 09:50:33
218
2
原创 Java进阶指南:JVM核心知识1.1字节码基础
本系列主要针对想进一步进阶Java的开发者,本文大致介绍了Java的大概优势,并且介绍了字节码的生成与查看。
2023-02-26 09:22:33
244
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人