ACM总结

第八次

这是开学以来的三次总结了,同时也是上网课的第二周。

在上一个周的总结中,老师说我们看的内容太少,写不出东西来。所以这一周老师就要求我们每天看十篇博客,然后主要就是看搜索和思维的博客以及题目。我在这一周看的总的博客数大概就是四五十道题目的样子,主要是思维和搜索的题目,可是我真正看懂的很少,我感觉我真正理解也就那十几篇。

下面讲一讲我主要看了那些内容吧。

 

我先讲一下我学的搜索吧:搜索分为广度搜索与深度搜索。深度搜索可以用于寻找所有情况(大多数都有回溯的过程,以便可以找到全部的解),当然如果想要找最佳方案,就可以建立数组来储存,在函数递归的过程中进行判断,看是否需要更新最优值。

下面具体讲几个我看的深度搜索的题目:

一个就是背包问题,在背包问题中需要对那n 个物品依次进行判断,同时在递归函数中需要进行判断,也就是当当前的判断数已经达到n(就是已经对n个物品进行了拿与不拿的判断),这就是出来了一种方案,这是就需要在函数中判断是否该方案的最大价值超过当前的最大价值,如果超过,那就更新。对于每一件可以拿也可以不拿,由此就产生了不同的方案,该过程需要借助递归来实现。

一个是不拿这件物品,这个只需要在参数列表上已选择的个数那一个参数加一,价值和重量都不需要变。另一个就是那这件物品,这样就需要个数加一,同时价值和重量都需要加上相应的价值和重量(在这一步之前可以进行判断,也就是拿了这个物品会不会出现超重也就是剪枝)。同时我发现在这个代码的实现过程中,都没有价值或重量的加减,他们都在函数的参数列表中进行了实现。

 

接下来,我主要看的就是思维的题目了,思维的题目,我感觉每一个都有自己的思考点。

我看了一道是小红的375,这个题目就是让你把一个大的数据进行重新排列,使他成为375的倍数。

我第一眼看到这个题目,我就想的是列举375的倍数(有点不太现实)。我看的人家的题解写的是375=3*125。所以,要是375的倍数,必须得是3和125的倍数。确实,这个方法当时没有想到。对于3的倍数,很好判断,只需要所有位数的和加起来是3的倍数就行,对于125的倍数,这里也采用了一个很好的方法,那就是因为125的倍数只和后三位有关,然后我们就可以建一个数组,把所有的情况列举出来,以便接下来统计。

 

还有一道是汽车的问题,zh前面有许多辆车,每一辆车都有其长度和最大的速度。求zh到达红绿灯线的最长时间。

对于每一辆车,虽然有最大的速度,但是他不能超车,也就是说,会受到前面那一辆车的限制。我当时想的时候,就是想的把所有的车放在一起,但是当我想到那么多车,还有那么多速度的时候,还是感觉到很麻烦,还需要进行速度的比较什么的,但是上面的题解就是把他们当成一个整体,然后有一个共同的速度,用相应的总路程除以相应的速度,找到那个最长的时间就行。不用考虑太多,就把每一个限制速度的时间都求出来,然后比较就行。

 

通过看博客,我还见到好多二进制之间异或的题目,不过我不是很懂。这就先不写体会了。

还有好多的思维题目我都没有看懂,还有就是好多的题目都是英文的,我真的感觉我对题意的理解有点困难。

 

这个星期我还看了动态规划的博客,我理解的动态规划,就是利用之前的数据,来减少计算量。我见了好几个题都是感觉运用了递推,后面的数据可以通过前面的数据进行运算得到。大概就是讲大的问题分解为小的问题,当然到最小的那个需要有一个临界,这样才能依次推出来后面的值。

 

这个星期我还看了许多零碎的知识点。一个就是散列,就是对于一个很大的数,可以将他除以一个整数缩小后,放进hash中,当然也可以将一个点或者字符串放进去。同时在散列这一部分还有一个思想就是以空间换时间,比如说查找一个数在一组数中是否出现过,那么这在存这一组数的时候,就可以将这些数放在一个数组里面,可以同时也统计其个数。

还有就是几个函数了:

Tolower():位于<cctype>头文件中,它可以把括号里面的内容换成小写,如果没有那就保持不变。

Max_elemen(first,end,cmp):位于头文件<algorithm>中,默认情况下从小到大排序,max_elemen()函数返回的是最大值,min_element()函数返回的就是最小值,当然可以通过cmp实现从大到小的排序,这样max_element和min_element返回的值正好相反。这俩个函数可以用于选出数组中的最大最小值,并对他们进行处理。(返回类型是迭代器,取值的话需要在前面加上*),这个函数可以用来处理n机器处理m个项目,不同项目用时不一样,求所需时间。

Template:模板,可以实现代码重用,对于普通的函数当定义了一个int类型的函数,对于char类型的数据,就不能调用这个函数。通过这个模板可以实现不同的数据类型都可以调用。

这个星期总体上我感觉我学的并不好,好多时候掰着电脑看不懂就容易走神,学习效率不高,可能因为这个星期看不懂的内容太多问题就比较明显了。下个星期新的开始,从克制这个毛病开始。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACM OCPCC Cup是由中国计算机学会(ACM)主办的一项编程比赛。该比赛旨在为亚洲地区的大学生提供一个展示和比拼计算机编程能力的平台。 ACM OCPCC Cup的全称是ACM Overseas Collegiate Programming Contest(ACM海外大学生程序设计竞赛)Cup。作为一场高水平的学术竞赛,ACM OCPCC Cup面向全球各地的大学生开放,参赛者可以以由国内或国外大学组成的团队形式参加。 在ACM OCPCC Cup的比赛中,参赛团队需要通过解决一系列的计算机编程题目来展现他们的算法和编码技巧。比赛过程中,参赛者需要在规定时间内独立完成题目,要求正确并且尽快地给出解答。此外,ACM OCPCC Cup还要求参赛团队要具备一定的团队协作能力,因为他们需要合理分工和合作解决编程问题。 ACM OCPCC Cup的目标是培养和提高大学生们的计算机编程和算法思维能力,促进国际间的交流与合作。这项比赛不仅可以锻炼参赛者的计算机编程技能,还可以增强他们的创新意识和团队合作能力。ACM OCPCC Cup也为参赛者提供了与来自世界各地的优秀程序员进行交流和学习的机会。通过这个平台,参赛者可以积累宝贵的经验,并且与其他参赛者共同进步。 总结来说,ACM OCPCC Cup是一个由中国计算机学会主办的面向全球大学生的编程比赛。参赛者需要通过解决一系列编程题目来展示他们的编程能力和团队合作能力,从而提高他们的计算机编程技能和算法思维能力。这项比赛旨在促进国际间的交流与合作,为年轻的程序员们提供一个共同成长的平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值