每周学习总结

每周学习总结
2021-4-24
(点进来的同学们,👉👉👉别走👈👈👈,我知道你们可能是想来看代码的,网上有的是ac代码,但是代码太晦涩难懂,所以我就省略了,但是你们可以看思路和总结,搞懂了这题咋做,然后看网上的代码就快了。)

  • 区间dp
  • 1,整数划分
  • 题意,给定一个由数字组成的字符串和m个乘号,要求将这m个乘号插入到字符串中,是的乘积的和最大。
  • 理解,如果按照区间dp的通用作法,一重用len,二重是范围,到这里就会发现不好判断乘号的数量和位置,但是根据所给的条件,会发现与线性dp有些联系,dp【i】【j】表示截止到这个点有j个乘号。我们会发现即便是有j个乘号,但是乘号的不同位置也会有不同的值,所以我们就只考虑最后一个乘号的情况。
  • 思路,看理解即可,这题细节较多。
  • 细节,1.开始时,建立一个num【】【】第一维表示开始位数,第二维表示截止的位数,num表示两个下标之间的数字的值2,首先进行预处理,将j=0的时候情况考虑,而且一维的范围是从一到最后。3,i=j+1,因为数字一定要比乘号多。4,k的取值一定是小于的,因为乘号不能在最后。
  • 总结,首先,这题细节较多,没有细节,即便是有了正确的思路和思考方法也是不能av的,尤其是特殊情况需要特殊考虑。所以同学们在平时,不要只看大体思路,还是自己动手写一下代码积累经验,时间一长,距离就拉开了。第二,这题如果从dp【】【】来看,会发现和线性dp非常相似,但是考虑到每次第k个乘号的位置会发现和区间dp有关系,所以是一道综合题。这告诉我们,做题时如果用一种方法做不到最后,那可以做到一半然后用其他的方法继续。
  • 2,poj3186 treat for the cows
  • 题意,仓库里有食物,但是只有两个开口,每天可以从一个门口拿走一个食物,食物的顺序就是输入的顺序,但是每个食物的价值不同,随着天数的增加食物价值也增加,具体价值为食物的价值乘天数。
  • 理解,如果每次只是判断首元素和尾元素的大小然后累加的话,是错误的。因为这个元素再后面几天的价值会更大,所以贪心诗绝对不可以的。因为第i天的状态和第i+1天的决策有关系,所以可以考虑用dp,而且是一个双向问题所以可以考虑用区间dp求解。
  • 思路,一重循环是len,二重循环是起始和终止位置,dp【i】【j】表示剩下从i到j的所有元素的时候,之前取值的最大值。dp【i】【j】等于1,dp【i+1】【j】+a【i】(n-len)2,dp【i】【j-1】+a【j】(n-len)中的最大值,表示是取最后一个元素还是取第一个元素。
  • 细节,dp【i】【i】从首到位尾是a【i】*n因为只有最后一个元素的时候。
  • 总结,1,这题特殊在只用了两重循环就搞定了,所以在以后的做题中,不用强行考虑三重循环的情况,可能就只有两个。2,比较的时候不再是dp=Max(dp,xx)了而是dp=Max(x1,x2)说明比较方式多样。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值