关于数位dp的一些思考
大致看完了claris的数位dp的pdf,感觉题目很厚实啊QAQ。
然后回过头再总结一下(感觉也不算总结啊,就是日常吐槽。。。。)
首先数位dp这个东西是有格式的。。。。所以明天早上再找道题来把模板联系一下,尽量写的标准化一点。。
由于数位dp的字符集不多,有些时候可以像状压dp一样直接把每种数的简单状态压在一个数里面。
由上面在推广一下,如果说和乘积什么的有关的话,这里面的质数就是有2,3, 5, 7(0 有特殊性。。。),所以就可以单独来记录这几种数的情况。
同样的,很多时候你dp里面的状态可以不用记录沉积,我们充分利用字符集的优势以及一般题目有时候会给你一个比较小的模数的时候,这个时候你就可以在状态里直接记录mod这个数后的值记录在状态里面就好了。
还有就是数位dp有时候不是那么明显的时候,就可能给你一些式子,然后你要推式子推出有一些结论,并且这个结论应该(我猜的)有一些特点就是应该看成二进制或者几进制的运算,所以我们要大胆的尝试(这个很重要),这样才能给我们发现结论提供很多帮助,而且要有意识的去看进制下的运算形式,这样才好向有机会的方向转换。
然后还有一些题即使比较综合的了,要么就是比较结论的题不知道就凉凉,要么就是和其他很多东西结合起来的了,就不好总结了。
最后一点,数位dp毕竟和计数有千丝万缕的联系,那么就必然有组合数,容斥这两对活宝了。。。这个就很考水平了QAQ,从pdf的几道例题看,最常见的就是前导零考不考虑,要满足很多个限制就至少满足一个,至少满足两个的容斥,组合数反而是用来连接dp之间不同的状态的。。。。这些每道题之间有很大的不同,也不多说了。
总的来说就是分析性质,解决问题。小心推理,大胆尝试。(看我这个口号怎么样。。。。啦啦啦)
关于数位dp的一些思考的更多相关文章
- 浅谈数位DP
在了解数位dp之前,先来看一个问题: 例1.求a~b中不包含49的数的个数. 0 < a.b < 2*10^9 注意到n的数据范围非常大,暴力求解是不可能的,考虑dp,如果直接记录下数字, ...
- 初探数位dp
数位dp有着很明显的特点,一般来说是给定区间[l,r]求满足某种条件区间中的数有多少个 朴素解法一般是O(n)的而n往往很大(10^8起步) 这时候我们就要想办法优化,于是就有了数位dp 数位有两个基 ...
- 动态规划——数位dp
通过先前在<动态规划——背包问题>中关于动态规划的初探,我们其实可以看到,动态规划其实不是像凸包.扩展欧几里得等是具体的算法,而是一种在解决问题中决策的思想.在不同的题目中,我们都需要根据 ...
- [poj3252]Round Numbers_数位dp
Round Numbers poj3252 题目大意:求一段区间内Round Numbers的个数. 注释:如果一个数的二进制表示中0的个数不少于1的个数,我们就说这个数是Round Number.给 ...
- Luogu4345 SHOI2015 超能粒子炮·改 Lucas、数位DP
传送门 模数小,还是个质数,Lucas没得跑 考虑Lucas的实质.设\(a = \sum\limits_{i=0}^5 a_i 2333^i\),\(b = \sum\limits_{i=0}^5 ...
- Codeforces #55D-Beautiful numbers (数位dp)
D. Beautiful numbers time limit per test 4 seconds memory limit per test 256 megabytes input standar ...
- 洛谷P2602 数字计数 [ZJOI2010] 数位dp
正解:数位dp 解题报告: 传送门! 打算在寒假把学长发过题解的题目都做辣然后把不会的知识点都落实辣! ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 然后这道题,开始想到的时候其实想到的是大模拟,就有点像之前考试贪 ...
- POJ 3286 How many 0's(数位DP模板)
题目链接:http://poj.org/problem?id=3286 题目大意: 输入n,m,求[n,m]的所有数字中,0出现的总数是多少,前导零不算. 解题思路: 模板题,设dp[pos][num ...
- POJ-2282题解&数位DP总结
一.题意 给定一个区间[a, b](注意输入的时候可能a > b,所以,在数据输入后,要先比较a和b,如果a > b,交换a和b的值),统计这个区间里面,数位上有多少个0.多少个1.--. ...
随机推荐
- vue脚手架安装
1. 脚手架: 如何: 1. 安装脚手架的工具命令: npm i -g @vue/cli 电脑安装完命令后 : 直接创建 vue create 文件夹名字 2. 用命令反 ...
- parse_str()和http_build_query()的使用
<?php $_html = array(); $_html['action1'] = 'action1'; $_html['action2'] = 'action2'; echo http_b ...
- Python Web开发:使用Django框架创建HolleWorld项目
开发环境搭建 Python环境安装 下载地址:https://www.python.org/downloads// Django安装 打开Windows CMD输入pip install django ...
- HDU 5634 线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5634 题意:给定一个长度为n的序列,有m次操作.操作有3种: 1 l,r :区间[l,r]的值变成ph ...
- Sass Maps的函数-map-keys($map)
map-keys($map) 函数将会返回 $map 中的所有 key.这些值赋予给一个变量,那他就是一个列表.如: map-keys($social-colors); 其返回的值为: "d ...
- MySQL执行外部sql脚本文件命令报错:unknown command '\'
由于编码不一致导致的 虽然大部分导出是没有问题的 但是数据表中存储包含一些脚本(富文本内容)会出现该问题,强制指定编码即可解决. mysql导入时指定编码: mysql -u root -p --de ...
- 解决 linux 下安装 node 报: command not found
注意:有时安装成功后,需要关闭xshell,重新启动.nvm才会生效. 1. 在 linux 下安装 node 提示 -bash: node: command not found. 2. 这种情况可 ...
- 如何使用WidsMob Montage—蒙太奇制作有趣的动物照片?
今天,越来越多的人有宠物.根据最近的一项调查,超过六成的美国人在家中至少有一只宠物.这些宠物不是动物,而是家庭成员.因此,有趣的动物照片成为社交媒体上的热门话题是有道理的.当您打开朋友圈或短视频APP ...
- VUE中使用canvas做签名功能,兼容IE
<template> <div> <div class="msgInput"> &l ...
- Android USB驱动源码分析(-)
Android USB驱动中,上层应用协议里最重要的一个文件是android/kernel/drivers/usb/gadget/android.c.这个文件实现USB的上层应用协议. 首先包含了一些 ...