acwing刷题
文章平均质量分 50
日常刷题记录
风筝有风了吗
这个作者很懒,什么都没留下…
展开
-
推箱子第二部分(两次bfs)
因此先对箱子做bfs,相应的对人做bfs,确实有点难,一整个看不懂可以一部分一部分的看,首先把问题拆解,第一个问题是一个人从start位置开始走到end位置,这是一个经典又简单的bfs,然后写箱子从start到end,但要通过人的bfs判断是否箱子可以有这样的走法。一直改bug到现在,幸亏最终还是过了,不然真就通宵了,,,,室友都睡了,抓紧时间发文章,坚持一天一篇。函数,执行广度优先搜索,以找到箱子到达目标位置的最短路径。函数,执行广度优先搜索,以找到从人当前位置到目标位置的最短路径,同时避免箱子的位置。原创 2023-09-14 01:15:00 · 63 阅读 · 1 评论 -
推箱子第一部分(一个人从起点走到目的地,不能经过箱子和墙体)
这道题有点难度,因此我准备分解为两篇文章进行描述,这一篇是简单的bfs,判断一个人是否能从start点走到end点,且不能经过box和墙体。并且把路径存到seq中,并返回bool值。原创 2023-09-12 23:21:31 · 118 阅读 · 0 评论 -
摘花生(dp和bfs)
我们从左上角开始,每次搜索它的右边和下边位置,如果新的位置在数组内并且路径和更大,我们就更新该位置的路径和,并将新的位置加入队列。第一个代码片段是一个动态规划(DP)问题,它主要解决了一个二维数组中的路径最大值问题。主要的思路是,对于数组中的每个位置(i, j),它的最大路径和来自于它的左边位置(i-1, j)或上边位置(i, j-1)的最大路径和加上当前位置的值。第二个代码片段是广度优先搜索(BFS)问题,也是解决二维数组中的路径最大值问题,但是与DP不同,BFS是通过搜索的方式找到最大路径和。原创 2023-09-11 22:55:15 · 91 阅读 · 0 评论 -
方格取数(滚动数组优化dp)
【代码】方格取数(滚动数组优化dp)原创 2023-09-10 22:02:50 · 66 阅读 · 1 评论 -
亲戚(并查集路径压缩)
函数用于查找元素所在的集合。如果元素u的父节点不是它自己,那么就递归查找u的父节点所在的集合,直到找到一个父节点是自己的元素,这个元素就是u所在的集合的代表元素。在每次查找时,都会直接将该元素的父节点设置为该集合的代表元素,这样可以减少后续查找的时间。最后,这个程序使用到了路径压缩(Path Compression) 优化方法,这可以让并查集的操作接近O(1)的复杂度。并查集模板及路径压缩写法。并查集的实现主要通过。原创 2023-09-10 20:32:41 · 35 阅读 · 1 评论 -
智商药(二分查找以及动态规划)
总结:该代码通过动态规划和二分查找等算法,求解某种特定问题。输入包括两个整数和两个数组,输出为一个长整型结果。//第一个右边界小于a[i].l的药的序号。//第一个右边界小于a[i].r的药的序号。原创 2023-09-09 20:01:14 · 60 阅读 · 1 评论 -
选人(组合数)
总体来说,这段代码的功能是计算满足一定条件的概率值。根据输入的n、m和h,它计算出一个特定的概率,并输出结果。原创 2023-09-09 19:18:34 · 31 阅读 · 1 评论 -
无线网络(double类型变量的二分查找)
如果结果向量的大小达到3,则返回false,因为这意味着我们需要一个更大的圆来覆盖所有的点。在函数最后,如果结果向量的大小小于3,则用0填充它。这表示我们需要一个更小的圆来覆盖所有的点。需要注意的是,这个代码只考虑了x坐标,而没有考虑y坐标。如果点不在一条直线上,这个代码就不能正确地找到一个最小的圆来覆盖所有的点。,并通过不断二分这个范围来逼近最小的半径。每次检查圆心是否能覆盖所有的点,如果可以,则缩小搜索范围为。是否足够覆盖所有的点。来获取覆盖所有点的圆的三个点的坐标。输出最小的半径和三个点的坐标。原创 2023-09-09 10:47:08 · 44 阅读 · 1 评论 -
更小的字符串(数位dp,pow函数使用细节)
1.此题不能用使用快速幂计算每一次的pow函数。因为此时复杂度为n2,如果使用动态规划可以使时间复杂度将为n。2.库函数中的pow函数参数是double,返回值也是double。原创 2023-09-08 22:50:27 · 44 阅读 · 1 评论 -
无限区域(PI的表示)
acos(-1)可以在double精度表示Π的值。原创 2023-09-08 16:03:28 · 93 阅读 · 1 评论 -
病毒(bfs常数优化)
效果一样,但是判断之后可以少一步队列的放入操作,大大减少常数时间的计算量。原创 2023-09-07 23:23:04 · 38 阅读 · 1 评论 -
冰壶(cmp比较器的使用)
主要是举一个使用sort函数比较器的方法(比较结构体的方法)。原创 2023-09-07 21:58:23 · 67 阅读 · 0 评论 -
快乐子数组(前缀和及单调栈)
这道题主要用到一个数学知识,怎样利用前缀和去计算,数组中的每一个值依次乘以等差数列中的每一项的和。总的来说,这个程序通过使用栈来维护最大值的位置,然后根据题目要求进行相应的计算,最终得到结果。则设R=na1+(n-1)a2+(n-3)a3+......+an;//i要向前取一位来保证数组中的第一个数被统计到。例如 已知a1+a2+a3+......+an=A;//前缀和的每一项分别乘以一个等差数列的一项。首先,包含必要的头文件并定义一些常量和类型。所以R=(n+1)B - A;可得A+R=(n+1)B;原创 2023-09-07 21:12:11 · 90 阅读 · 1 评论 -
拼接数组(dp)
为以索引为结尾的最大字串和、当前位置为结尾的最大和以及当前位置为开头的最大和中的最大值。//以arr[j]为结尾的和最大字串。到1,依次计算以每个位置为开头的最大和,并更新。* 计算以该元素为结尾的最大字串和,并更新。* 更新以当前位置为结尾的最大和,并更新。* 将该元素与当前位置的和相加,并更新。b. 从标准输入读取数组元素的长度。,依次读取每个数组元素并将其存储在。a. 从标准输入读取查询的索引值。c. 创建一个循环,从1到。e. 再次创建一个循环,从。8. 创建一个循环,从0到。原创 2023-09-07 16:13:39 · 37 阅读 · 1 评论 -
魔法百合井(dp优化n2->nlongn)
相较于一般的dp是由哪个状态更新此时的状态,优化后的dp是由此时的状态可以更新哪个状态。原创 2023-09-07 00:00:49 · 61 阅读 · 1 评论 -
电(记忆化搜索且卡cin)
在深度优先搜索函数中,对于每个节点,首先判断该节点是否已经被访问过,如果已经访问过,则直接返回该节点的路径和;否则,遍历该节点的所有相邻节点,对于相邻节点,如果相邻节点的值大于当前节点的值,则递归调用深度优先搜索函数,并将路径和加上递归返回的结果。最后将当前节点的路径和更新为最大的路径和。//ne由头节点下标寻找下一个相邻节点的下标作为下一个头节点。//稀疏图使用邻接表。原创 2023-09-05 23:24:05 · 49 阅读 · 0 评论 -
5037.区间异或(线段树)
线段树int n,m;int a[N];int l,r,d;} tr[4*N];i原创 2023-09-04 20:36:17 · 86 阅读 · 0 评论 -
5034. 配对
bool st[N];int n;int d,a,b;if(d!cin>>n;i>a[i];heap.pop();continue;continue;break;i++) {return 0;原创 2023-09-03 21:00:28 · 64 阅读 · 0 评论