4.28总结

本文总结了一次算法练习的经历,强调了在SAM算法应用、思维拓宽及算法实现简洁性上的挑战与改进。指出SAM算法掌握不足、缺乏有效思路导致部分题目未解决。通过案例分析,提出SAM DP前节点排序的重要性,并分享了第二题的解题策略。总结了复习SAM技巧、加强思维训练以及优化算法实现的重要性。

总结

  • 今天做题其实还是挺有感觉的。。但是思维没有开阔起来。

过程

  • 先看了一下题目,第一题把他的式子随便化了一下,又看到A是01矩阵,就知道是道网络流裸题了。。第二题一开始想没有什么好的思路。第三题又是SAM的裸题。第四题看着那个条件感觉很眼熟,好像就是线性无关。刚好冬令营的时候讲过他的贪心。所以大致确定了1,3,4的做题顺序。
  • 第一题还是比较好打的。但是一开始打了dinic,比较慢,后来换成了sap,打完差不多9点钟。
  • 接下来打第三题,SAM还是不太熟悉。对fail指针的意义以及其Dp的顺序掌握不好。推了一下以为可以了。然后拍也是Ok的。
  • 第四题,一开始都忘记高斯消元怎么打了。一直在改高斯消元。而且对于线性无关的判定很不熟悉。导致我根本无法把70分的算法改进到100分。而且拍完第四题之后都已经差不多10点半了。
  • 最后去搞第二题。丝毫没有思路。自己YY了一个贪心。想不到怎么把题目模型抽象出来。

最后220。。第三题挂掉了。第二题只有十分。

第三题的错误在于,

  • SAM Dp之前,应当把节点按其len进行排序,不能进行拓扑排序,因为fail的拓扑序不一定在其前面。

第二题的做法!!!

  • Description

    • 给你一副 NM 的网格图。

      上面的每个点都有宝藏数 Ai,Ai0

      你每次都从左上角出发,并且只能往右边和下边走。
      走到一个点,你只能捡起一个单位的宝藏。

      问你至少要走多少次,才能将所有的宝藏捡完。
      N1000,M1000

  • 我们可以注意到的是,

    • 若对于两个位置 (i,j) , (x,y) ,满足 ix,jy ,那么我们永远都不可能用一条路径把他们两个都覆盖了。

      我们找出宝藏总数最大的一个点对序列 (i1,j1),(i2,j2)......(ik,jk) ,其中 ixix+1,jxjx+1

      设其宝藏总数为 y
      那么我们最终的答案就是 y

      这个为什么是正确的呢??

      因为我们要覆盖这 k 个点,至少需要 k 条路径,且因为我们计出来的是宝藏总数最大的。也就是说约束最紧的点。

      设最终的答案为 Ans

      那么显然的是, Ansy

      接下来我们证明 Ansy

      设一个点 P(x,y) ,且P不在这个序列当中。

      那么P有两种情况


      1. P可以被一条经过点i,其中i属于我们点序列,的路径穿过。那么因为i的宝藏数比P的大(不然i就不会被选入序列中了),所以P肯定能被取完。

      2. P不能被一条经过点i,其中i属于我们点序列,的路径穿过。那么P显然会被选入我们的序列。与P不在点序中矛盾。
    • Ansy,Ansy Ans=y

总结

  1. SAM还是掌握的不好。对于一些自己之前比较在行但很久没有打过的东西容易忘记。。所以还是要经常复习。
  2. 考试的时候脑洞没有打开。思维还是不行。
  3. 算法的实现做不到简洁。这样子其实容易使得自己无法对算法进行进一步的优化。拿到更多的算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值