自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 acwing 算法基础课(第六章完整版 c++详解)

(1)算法思想:先将每个区间按照右端点从小到大排序吗,然后从小到大依次枚举每一个区间,如果当前右端点已经包含在该区间内,则跳过这个区间,否则更新右端点为当前区间的右端点。证明:比较最终结果ans和选出的点个数cnt大小关系,即证ans>=cnt&&cnt>=ans。先证ans<=cnt:由于上述方法选择的方案保证了每一个区间都至少包含一个点,因此为一个合法的方案,而ans表示的是合法方案中的最少点个数,因此ans<=cnt。

2024-04-12 22:04:01 727

原创 acwing 算法基础课(第六章更新中 c++详解版)

按照区间左端点从小到大枚举每一个区间,若堆为空或者堆顶小于当前区间的左端点,说明当前区间与所有组都产生冲突,因此需要将该区间的右端点加入堆中,否则说明该区间至少可以加入堆顶的组中,因为该区间的右端点一定大于堆顶,因此通过删除堆顶再加入该区间的右端点即可更新堆顶组。初始化选择的右端点为负无穷,选择的点的数量为0从小到大枚举每一个区间,如果当前区间的左端点大于选择的右端点,则更新右端点为当前区间的右端点,并将选择点的数量加1。选择能覆盖起点的右端点最大的区间,然后更新起点为所选区间的右端点。

2024-04-11 11:22:22 763

原创 acwing 算法基础课(第五章完整版 c++详解)

(1)算法思想:见上图(2)代码实现思路:求f(i,j),i从0开始枚举到n件物品,再用j从0开始枚举到最大体积m,由于包含i的集合可能不存在,因此先计算不包含i的集合,即f(i,j)=f(i-1,j),若当前的状态可以划分包含i的状态,即j>=v[i],那么就计算当前枚举的f(i,j)最终值,即max(f((i-1),j),f(i-1,j-v[i])+w[i])),当全部枚举结束后,计算的就是f[n][m],即前n个物品中总体积不超过m的最大价值。

2024-04-10 18:45:02 584 1

原创 acwing 算法基础课(已更新至第五章 c++详解版)

与01背包思路相同,只是在集合划分上有所区别,以f(i,j)为例,对其进行下一步划分,考虑以取i物品的次数k次划分集合,若k等于0,则相当于f(i-1,j),若k不等于0,则采取01背包类似的办法,将i物品先全部取出,不影响最终选法的求解,即求f(i-1,j-k*v[i]),最后再加上k*w[i],即f(i-1,j-k*v[i])+k*w[i],不难发现k=0情况可以与之合并,最终就是取从0枚举到k的最大值中f(i-1,j-k*v[i])+k*w[i]的最大值,k的最大值可以通过j>=k*v[i]求解。

2024-04-09 12:20:08 1030

原创 acwing 算法基础课(第四章完整版 c++详解)

先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目。

2024-04-08 17:30:28 2047 1

原创 acwing 算法基础课(第四章c++详解版)

只需判断该数x是否被i整除即可,若被整除,则这个从2开始枚举的i一定是质数(因为若i为合数,则在2~i-1中必有一个数可以整除i,那么先枚举到的一定是这个合数的因子,依次递推最终会先枚举到一个没有因子的数,即为质数),由于存在大于sqrt(x)的质因数,此时的质因数就是x被整除完剩余的数,且只有一个,即指数为1(如:51,最初能整除该数的质数为3,而后在循环中就寻找不到下一个质因数,但显然能被17整除,且指数为1,且该数一定为质数,原因与上面的推理相同)。若b为0,则x为1,y=0。

2024-04-07 18:06:35 1043

原创 acwing 算法基础课(第三章 完整版)

(1)算法思想:递归函数:假设求n=3时的全排列,函数入口为位置u(u从path数组第0号位置开始,当u为3时说明数组中0,1,2三个位置都有数字,所以该输出了),设置一个数组path[]依次记录每一位的数字,当第3个位置有数字时就该输出该组合同时返回该函数,否则依次将未被使用过的数字加入path中,该循环的结束条件应该为i=3,然后再递归调用下一个位置,直到递归到第3个位置时返回(此时已达到最深部,即可。

2024-04-06 11:25:22 1807 1

原创 acwing 算法基础课第三章(c++详解版)

(1)算法思想:递归函数:假设求n=3时的全排列,函数入口为位置u(u从path数组第0号位置开始,当u为3时说明数组中0,1,2三个位置都有数字,所以该输出了),设置一个数组path[]依次记录每一位的数字,当第3个位置有数字时就该输出该组合同时返回该函数,否则依次将未被使用过的数字加入path中,该循环的结束条件应该为i=3,然后再递归调用下一个位置,直到递归到第3个位置时返回(此时已达到最深部,即可。

2024-04-05 16:02:11 351 1

原创 AcWing 算法基础课(第三章 c++详解)

(1)算法思想:递归函数:假设求n=3时的全排列,函数入口为位置u(u从path数组第0号位置开始,当u为3时说明数组中0,1,2三个位置都有数字,所以该输出了),设置一个数组path[]依次记录每一位的数字,当第3个位置有数字时就该输出该组合同时返回该函数,否则依次将未被使用过的数字加入path中,该循环的结束条件应该为i=3,然后再递归调用下一个位置,直到递归到第3个位置时返回(此时已达到最深部,即可。

2024-04-04 10:11:09 710 1

原创 AcWing算法基础课(第二章完整版 c++详解 思路清晰)

vector, 变长数组,倍增的思想size() 返回元素个数empty() 返回是否为空clear() 清空[]支持比较运算,按字典序first, 第一个元素second, 第二个元素支持比较运算,以first为第一关键字,以second为第二关键字(字典序)string,字符串size()/length() 返回字符串长度empty()clear()substr(起始下标,(子串长度)) 返回子串c_str() 返回字符串所在字符数组的起始地址queue, 队列。

2024-04-03 10:00:00 1150 1

原创 AcWing 算法基础课第二章(C++详解版 思路清晰)

简介:在算法竞赛中链表多为静态链表,即利用数组实现;而不是申请空间(动态链表)(1)算法思想:想象一个由head指针依次指向多个结点,形成一个链条。每个结点具有e[](结点的数值),ne[](指向的下一个结点的序号)。(2)代码实现思路:首先设置e[] ne[]两个数组,设置idx表示当前点的序号。初始化链表:将head头指针指向的结点序号设为-1,idx指向第一个结点,序号为0;

2024-04-02 10:00:00 724

原创 AcWing 算法基础课(第一章完整版 c++详细讲解)

模板一确认中间值:根据已排序完成的数组,选择中间点mid=(l+r+1)/2,假设小于待查找数x的范围为左区间,右侧为大于待查找数x的范围为右区间(这里与我之前学的思维有点差异:我之前学的是用x跟mid的内容比较,y总讲的是mid的内容和x比较,直接看代码可能更好理解一些~)条件判断:判断mid是否满足左区间性质(即x>=a[mid]),如果满足则说明mid在左区间,即x在mid右侧(更新区间为[mid,r],l=mid),否则x在mid左侧(更新区间为[l,mid-1],r=mid-1)

2024-04-01 10:00:00 1751 1

原创 AcWing算法基础课(c++详解版 思路清晰 适合零基础)

(1)算法思想(分治):先确认分界点:一般选为左端点l或者右端点r或者中间点(l+r)/2调整区间:使分界点左侧的数都小于等于分界点,右侧的数都大于等于分界点递归处理左右两侧(2)代码实现思路:循环实现分界点操作,设置两个指针i,j分别指向数组的首尾,将两个指针的内容的大小与分界点比较,当左指针内容小于分界点,左指针右移,当右指针内容大于分界点,右指针左移,否则先交换两个指针的内容,再向中间靠拢。如果两个指针相遇,则退出循环。通过递归将每一个分界点完成调整区间操作。

2024-03-31 09:30:22 740

原创 AcWing 算法基础课(C++ 思路清晰,适合零基础)

(1)算法思想(分治):先确认分界点:一般选为左端点l或者右端点r或者中间点(l+r)/2调整区间:使分界点左侧的数都小于等于分界点,右侧的数都大于等于分界点递归处理左右两侧(2)代码实现思路:循环实现分界点操作,设置两个指针i,j分别指向数组的首尾,将两个指针的内容的大小与分界点比较,当左指针内容小于分界点,左指针右移,当右指针内容大于分界点,右指针左移,否则先交换两个指针的内容,再向中间靠拢。如果两个指针相遇,则退出循环。通过递归将每一个分界点完成调整区间操作。

2024-03-30 14:28:52 369

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除