自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ACM第十二周

二分法查找大体框架:while(...){int mid=(right+left)/2;if(nums[mid]==target){...}else if(nums[mid]<target){left=...}else if(nums[mid]>target){right=...}为了防止在写计算时mid溢出,写为mid=left+(right-left)/2更保险。如果初始化right为l-1,则说明我们的搜索区间是闭区间,如果right初始化为l,则我们的搜索区间是

2021-05-23 23:35:23 77 1

原创 ACM第十一周

多重背包多重背包与01背包不同的是每个物品不是只有一件,而可以有多件。其解决方法是先将问题转化为01背包,即将n个物品i分别存成n个物品再用01背包的方法解决。比如多重背包课件的第一题,可以套用完全背包的大体思路,写为:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]};这是基本解法,而转化为01背包,则需把第i种物品转化为n[i]件01背包中的物品,在这里为了可以降低复杂度,可以利用二进制思想,把第i种物品换成若干见,让原来问题中第i种物品可取的每种策略都等价于取若干件代换以后的

2021-05-16 23:39:00 76

原创 ACM学习第七周

01背包如果我们设vi为第i个物品的价值,wi为第i个物品的体积,则可定义v(i,j)表示容量为j的背包与前i个物品最佳组合的对应价值。因此我们可以得到递推式:1>如果包的容量比该物品的体积小,也就是说无法装下,在这个时候其价值与前i-1个的价值是一样的,即v(i,j)=v(i-1,j);2>如果有足够容量装下物品,那我们要看它能否达到当前的最优价值,于是v(i,j)=max{v(i-1),j),v(i-1,j-w(i))+v(i)};注:v(i-1,j)表示不装,v(i-1,j-w(

2021-05-09 17:13:15 138

原创 ACM学习第六周

区间dp区间DP,顾名思义,就是在一定的区间内进行动态规划。在探讨线性dp时,我们研究的是一个点的问题,而区间dp研究的则是多个点的问题。我们用dp[i][j]来表示一个区间i到j的最优解,其中i是起始位置,j是终止位置。然后对小区间依次枚举,从小区间向大区间合并,最终求得整个大区间的解。实现过程的本质就是三层枚举:第一层枚举区间长度,第二层枚举区间起点,第三层枚举区间分割点。这样在枚举第二层的时候,可以保证第三层的区间已经枚举过了。状态转移方程:dp[i][j] = max(dp[i][

2021-04-25 23:45:43 71

原创 ACM学习第五周

简单dp的题目解析,开拓思路:1.题目大意:一个虫子每过一分钟就会跑到相邻的一棵树上,比如当它在第二棵树时,一分钟后可能在第一或者第三棵树上,当在第一棵树上时,那么一分钟后会出现在第二棵树上,让你求M分钟虫子到达第T棵树的行走方案。解析:刚开始,我思考的是,这道题应该分三种情况:要么在第一棵树,只能往第二棵树走;要么在两边都有树,可以有两种方案;要么就是在最后一棵,只能往前走。代码如下:int main(){ int n, p, m, t; long long dp[101][1

2021-04-18 12:31:02 64

原创 acm学习第四周

DP动态规划是什么?分阶段求最优值:1)将复杂问题按阶段划分成子问题2)枚举子问题各种可能情况,从中找最优值3)利用 子问题的最优值求得源问题最优解关于以上步骤,在浏览了大量dp大佬的博客后,我认为另一种解释方式更容易理解。动态规划,实际上就是我们需要一些变量来保存历史记录,一般是用一维和二维数组来保存,而上面的三个步骤,可以理解为:1)定义数组元素的含义,即dp[]的含义。比如:我们要求从起点到终点有多少种方式,可以定义dp[i]为到目的地的方式数量。2)找出数组元素之间的关系式,在动态

2021-04-11 09:10:59 78

原创 Acm学习第三周

贪心算法(Vjudge类型题分析)以下题目分析,主要是写给自己看的,帮助自己理清思路第一类:区间重叠一般区间重叠的问题,都会有一个标志,就是给了你一段起始和终止数,然后根据题意判断它想要的是重叠部分还是不重叠部分,通常带区间的问题,在求解之前一定会有个排序,排序分为对起始时间排序和对终止时间排序,我们可以根据题意选择,比如如果所求的部分以每个区间的尾部为主则右排,否则左排。以下两道例题主要是右排序,在D中,则是一个明显的左排问题,因为要要用木板铺泥潭,肯定是从泥潭的第一个位置坐标开始逐一往后铺,而不

2021-03-27 10:14:30 147

原创 Acm程序设计学习第二周

贪心算法最近学习了贪心算法,其实对于贪心算法的核心思想并不难理解,其主要任务就是寻找问题的最优解。什么是最优解?这里的最优解并非整体上的最优解,而是局部上的,最优选择。即从问题的某一个初始解出发,逐步逼近给定的目标,以尽可能快地求得最好的解。下面我们可以用一个例题来更深入的理解它:A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadlin

2021-03-19 22:04:01 79

原创 acm程序设计学习第一周

所学知识:一.标准库string类的应用1.对字符串的赋值和初始化(1) string s1; s1="summer"; string s2="summer"; string s3("summer"); string s4=s1; string s5=s1+" "+s2;//字符串连接 s1+="5";//末尾追加(2)也可通过输入赋值: cin>&g

2021-03-13 18:55:57 80

mizhism2.mobileconfig

mizhism2.mobileconfig

2024-05-23

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

TA关注的人

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