山东农业大学ACM学习,第六周学习总结

山东农业大学ACM学习,第六周学习总结。

一.
本周学习总结回顾本周接着上周的学习,学习动态规划,经过这周做题的摧残,相对于上周见啥啥懵逼的状态有了极大的改变,上周做题,每每做到关键点,找出对象的表达式的时候,就碰壁,咋写都写不出来,现在做题,总算可以想通了,做起题来也更加顺畅了起来,即使不会做,大体思路也和题解差不了太多,学习也更来劲了。
这周做的题目比较多,上周做题过程中那个光想不动笔的毛病没有再范,每次做题前,我都会准备一个本子和一根笔,读完第一遍题目如果还是没思路就会接着读题,当有了一定的思路后便会将思路写在纸上,然后构建出一个完整的体系。随后我会依据所学将我们需要表示的内容表示出来。当然在表示的过程中我也会贯彻“最简”的思路。有了新的想法也会尝试与改动。接下来说一下这周我做题过程中,比较有印象且困难有趣的题目与思路。

二.做题总结回顾:

一。派人去比赛:这是我对动态规划有了深层次理解的开始。题目的大概意思是:n场比赛派k个人去,每个人可以参加多个比赛,且每场比赛必须且只能有一个人参加。
思路:
第一部分表示如果前i-1场比赛已经分配给了j-1个人,那么第i场比赛必须分配给第j个人,第j个人有j种情况,所以该部分对dp[i][j]的贡献就是jdp[i-1][j-1];
第二部分表示如果前i-1场比赛已经分配给了j个人,那么第i场比赛随便让这j个人中的一个人参加即可,所以这部分对答案的贡献就是j
dp[i-1][j]
最最最恶心的就是这个表达式写出来的思路,上课老师讲了,没想懂,课下搜索了许多资料才弄明白的。我深刻的体会到:动态规划算法的基本思想是将待求解的问题分解为若干个子问题,按顺序求解子问题,前一子问题的解,为后一子问题的求解提供了有用的信息。

二。洛谷数列
一切从sum闲得慌自己自娱自乐开始.首先考虑要寻找的答案,即最小段的最大值。它一定介于这个数列的最大值和整个数列和之间。因为数列中的最大值在被分段时,它所在的段和must>=它,临界条件是=它,如果只要分一段,那自然是总和。
1。如果分段数目比要求的数目多,即代表这个mid选小了,目标数在它的左边,返回为1->执行左区间变化为mid+1。
2.。如果分段数目比要求的数目少,即代表这个mid太大了,目标数在它的右边,返回0->执行右区间变化mid-1。
3.。如果刚好相等,因为要求段和最大值最小,就必须贪心到最小,要往左边看看是否有更小的满足条件,所以变化左区间,与1一样。(多操作即可)

三.本周我做题时还遇到了我最喜欢的一种题型,特别有趣:“走棋盘”或者说“走路最优解(附带条件)”类型
vjudge上的G机器人走棋盘就特别有意思。这种题的做题思想和高中时经常做的一类数学题特别相似,我一般都会把题目转化为数学的语言,然后进行改动与编写程序。
机器人耗费完起始位置的能量后收获终点的能量,只能向右走或向下走,让找到路径数。我们知道它最后停下来的点,所以我们要枚举出所有的情况,按照题目要求,进行累加,找出最优之解。这样就要注意到循环的使用,在此处可经常使用循环来减小问题的难度,但前提是找到共同的规律。

三.从做题中学会了什么:
把问题分为若干个步骤。在划分步骤时,注意划分后的步骤一定要是有序的或者是可排序的,否则问题就无法求解。将问题发展到各个阶段时所处于的各种情况用不同的状态表示出来。变量的选择也是有技巧性的。注意到循环的使用。寻找特殊状态,给出的状态转移方程是一个递推式,需要自己去发现去探寻。多动手写出来自己想到的思路,然后整合为整体。

四。感想
本周的学习,做难题也没太大的感觉了,有时甚至感觉做题挺有意思,学习逐渐步入正轨,但是自己的编程能力还是差(有所提升,但是自己还是不够满意)接下来的时间,一方面要跟上老师的节奏,另一方面还是自学C语言,在提升思维能力的同时,也要提升自己的编程能力。“生死看淡,不服就干!”冲冲冲!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值