学习日记4

      今天中午继续复习了搜索和图论的题目,做了两道题,一道是关于涂色的问题,要运用四色定理,然后再用dfs()让它一个一个的慢慢涂就行了,如果相同颜色挨在一起了,就加一种颜色,再重新涂,直到都符合条件,输出颜色数。还做了一道题,是关于dfs()的,就是有很多点,他们之间有一定距离,把他们分成两个区域,输出两个区域之间的所有点距离最大值,本来是想不到dfs的,看了题解之后会了,dfs()里两种情况,一种本点属于1集合,一种本点属于2集合,分别算出距离,最后累加求和总距离。幸亏我做了这道题,因为下午测试的第一题和这个非常相似,都是用的dfs(),我读完题后就会做了,,,

     下午测试,我就做出了第一题,,第二题一直wa。第三题只看了遍题,感觉用dp。下午的第一题,属于很简单的dfs(),直接就一边过了,就不说了,第二个一直wa,看了别人的题解才知道,自己有的地方想多了,有的地方想少了,比如,再变换的位数,我只想要变换和第一个序列不同的,而这里直接暴力全部都搜索就可以,不用进行剪枝。我是用的dfs(),加了很多结束条件,其实,直接模拟就可以了,也没有很多条件,只需要最后判断是否有重复,是否和两个序列只差了一位数就可以了,暴力模拟。。。第三题,我看了需要保存很多字母之间的距离,并且最后答案和给的可以替换的字母数量有关,和原来字母之间的距离有关,这多像dp啊也就是01背包。

     晚上的时候完善了一下测试题目。测试题目的第三题,根据题解,是直接dp肯定是过不了的,需要预处理,其实还一种方法,尺取法,用两个指针不断量取范围,根据给出的条件不断更新,最后更新出最大的长度,就是连续区间比较好用,我也是用的尺取法,补过的这道题,虽然这个dp比较简单,但是其中取距离,不想编了,等以后有空,再补一个dp预处理的答案,尺取话费时间多,当时间有要求时,还是得用预处理做。

     欢乐的一天过去了,迎接明天!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值