数位DP总结

博主分享了学习数位动态规划(DP)的过程,通过y总的视频教程,逐步独立解决问题,尤其在解决模数影响的问题上有了深刻理解。文章提及在蓝桥杯比赛中遇到类似题目,遗憾因细节处理不当导致失分,并反思了比赛中的时间管理和技术应用。博客提到了编程技巧,如使用引用简化长数组操作,并讨论了如何调试和优化代码。
摘要由CSDN通过智能技术生成

前言:

y总的数位DP视频的题也完了。
过程中五味杂陈。

y总讲的很好,看了他对第一道题的讲解,后面基本都靠自己做出来了,毕竟都是一个套路,除了最后一题抓了一天的虫子,就是搞不懂为啥我 > 10^9的数据就开始错,迫不得已继续看y总视频,学到了很多,发现自己没有考虑不同模数的影响,导致错误。

说下数位DP吧,嘤嘤嘤扯远了。

套路:

前缀和思想,求1 - R合法的答案 减去 1 - L合法的答案就行了。

求解过程,一定要 细 心
一般思考过程

从高位考虑到低位假设这一位是an,那么你可以直接求这一位是0 ~ an - 1 的答案,这个一般要DP预处理,很快就能求出来,然后在考虑这一位为an的情况,时次位的情况,最后再考虑下这个数本身的贡献就行。
如下图(y总视频里的)

在这里插入图片描述



上面那个就是个模板,题目难度全靠DP预处理提上去,这个难点的就会考虑一点数学了,比如题目恨7不成妻



然后写的时候有两个技巧

  1. 答案错误的时候,可以先从头到尾浏览下代码整体上有无问题,之后可以先从小的数据开始调试,看看自己到底哪里没有考虑到

  2. 有的DP数组很长,导致状态转移方程打起来又长不好写,所以嘛可以来个 &(学习y总的) 比如

auto &it1 = f[i][j][ ( l + j ) % 7][( j * key7[i] + m) % 7];

通过这个你就直接拿 it1 来状态转移就行了,不然数组太长了



过程中发现有一道题和今年蓝桥杯省赛一毛一样,而且还更简单了

在这里插入图片描述
Amount of degrees

在这里插入图片描述
怒 😦

蓝桥杯的比这题还简单,只考虑B是1。

其实打蓝桥杯的前2天我打的一场牛客就是用数位DP的思想做的,虽然正解不是,and当时还不知道这个是数位DP,结果国赛一看,这不是按我那个做法就行吗? 大喜 😃 ,结果当时不会用DP预处理组合数,用阶乘求的,最后一些点数据大就溢出了,假了嘤嘤嘤,说实话G异或变换也是那几天刚做过基本一样的题目,一看就知到循环节,结果还是没有理解本质,非要搞个map来存,最后几个点肯定也没了,好好的O(N)变O(logN),人傻了,比赛结束,发现自己B题目没有注意到是素数的前提,5分捐了,靠 😦。

等比赛出结果只是个国二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值