
算法
wen__xvn
我要成为c/cpp高手!
展开
-
前缀和c++
前缀和可以将数组中的连续元素相加sum是数组中第一个元素到第i个元素的和感觉像是简单的dp?原创 2025-03-29 21:49:48 · 644 阅读 · 0 评论 -
每日一题洛谷P5019 [NOIP 2018 提高组] 铺设道路c++
【代码】每日一题洛谷P5019 [NOIP 2018 提高组] 铺设道路c++原创 2025-03-17 19:05:56 · 189 阅读 · 0 评论 -
每日一题洛谷P1106 删数问题c++
【代码】每日一题洛谷P1106 删数问题c++原创 2025-03-17 17:10:16 · 399 阅读 · 0 评论 -
每日一题洛谷P1090 [NOIP 2004 提高组] 合并果子c++
这道题目有两种解法,原理都是哈夫曼树,代码不同,一种比较通俗易懂,一种比较高级,先来讲一下什么是哈夫曼树。一解:存入数据后sort排序,每次合并得到新数据之后再进行冒泡排序,确保每次取出的都是两个最小的数。每一次都将重量最小的两个优先合并可以使消耗的力气最小。问题是:如何每一次都找到最小的两个数?下图是按照样例构建的一个哈夫曼树。直接获取堆顶的两个最小元素。原创 2025-03-17 12:22:14 · 505 阅读 · 0 评论 -
插入排序c++
插入排序的原理是:第1次在0~0范围内排序,第2次在0~1范围内排序,第3次在0~2范围内排序……相当于每次排序时都比上一次排序多一个数,每次排序只要比较这个多出来的数与前几个数的大小(插入前几个数),而前几个数已经排好了。插入排序的时间复杂度为O(N^2),和冒泡排序的时间复杂度相同,但是在某些情况下插入排序会更优。原创 2025-03-15 19:35:29 · 226 阅读 · 0 评论 -
归并排序c++
归并排序是一个时间复杂度为O(N*logN)的排序算法,原理是在递归的函数中,把数组分成左右两边,分别对左边和右边进行排序,然后再设一个数组,把排好序的左右两边数组存进去,最后就会得到一个排好序的整体数组。图一为无注释版,图二为注释版。原创 2025-03-15 19:13:42 · 396 阅读 · 0 评论 -
每日一题力扣2591.将钱分给最多的儿童c++
【代码】每日一题力扣2591.将钱分给最多的儿童c++原创 2025-03-14 19:14:22 · 289 阅读 · 0 评论 -
每日一题力扣807.保持城市天际线c++
【代码】每日一题力扣807.保持城市天际线c++原创 2025-03-12 16:34:28 · 287 阅读 · 0 评论 -
每日一题洛谷P1223 排队接水c++
【代码】每日一题洛谷P1223 排队接水c++原创 2025-03-12 15:40:45 · 422 阅读 · 0 评论 -
每日一题洛谷P1507 NASA的食物计划c++
【代码】每日一题洛谷P1507 NASA的食物计划c++原创 2025-03-09 14:37:29 · 512 阅读 · 0 评论 -
每日一题洛谷P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题C语言(辗转相除法)
第一个是1.2和3.4是前后互换的,所以可以在代码中指明P原创 2025-01-01 20:52:11 · 276 阅读 · 0 评论 -
每日一题洛谷P2142 高精度减法C语言(高精度算法)
后来,作者换了种思路,即使用strcmp函数,直接比较A和B的大小。先用函数来比较A和B的长度,再用高精度减法来计算A-B的结果。因为strcmp无法直接比较数字大小,下图是比较规则。所以本题不能用strcmp。原创 2024-12-29 17:47:05 · 496 阅读 · 0 评论 -
c语言高精度算法(加法)
以我们以前学过的加法竖式为例,a[i]和b[i]相加,得到c[i],如果相加结果>=10,需要向前一位(c[i+1])进一。c[i]+=a[i]+b[i] 这一位的结果=这一位a+b的结果+上一位>=10部分的进位。long long的范围是-2的63次方到2的63次方-1,数量级为10的18次方。int的范围是-2的31次方到2的31次方-1,数量级为10的9次方。c[i+1]=c[i]/10 上一位>=10要向下一位进位。c[i]=c[i]%10 每一位>=10时只取个位。为什么要用高精度算法?原创 2024-12-27 15:44:51 · 765 阅读 · 0 评论