随笔分类 -  动态规划—数位dp

该文被密码保护。
posted @ 2019-03-16 19:30 lokiii 阅读(7) 评论(0) 推荐(0)
摘要:比较基础的数位dp,dfs的时候带上上一位,上上位,是否已经有连续3个相同位,是否有4,是否有8即可 但是要注意两点(在洛谷上一直70) 当l=1e10的时候,直接输出clc(r)即可,因为如果再减去clc(l 1)的话,是会多减掉1的 还有判断前导0 cpp include include usi 阅读全文
posted @ 2018-09-10 19:22 lokiii 阅读(178) 评论(0) 推荐(0)
摘要:参考了这个http://www.cnblogs.com/Artanis/p/3751644.html,好像比一般方法好写 大概思想就是先计算出把所有石子都合并到1位置的代价,这样显然有一些是不优的,然后再分别计算把合并到1的石子合并到p,能优化多少 这个计算就是枚举2到tot位,对于每一位计算挪到这 阅读全文
posted @ 2018-09-10 07:41 lokiii 阅读(137) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-09-09 14:47 lokiii 阅读(2) 评论(0) 推荐(0)
摘要:注意第一问不取模!!! 因为a+b=a|b+a&b,a^b=a|b a&b,所以a+b=a^b+2 (a&b) x^3x==2x可根据异或的性质以转成x^2x==3x,根据上面的推导,得到 x^2x=x+2x 2 (x&2x)==3x; 3x 2 (x&2x)==3x; x&2x==0; x&(x 阅读全文
posted @ 2018-09-06 09:33 lokiii 阅读(141) 评论(0) 推荐(0)
摘要:忘记limit不能记WA了一发…… 典型数位dp,变成work(r) work(l 1),然后dfs的时候记录w当前位置,la上一个数选的什么,lm当前位是否有上限,ok当前位是否可以不考虑差大于等于2的情况(前面全是0) 然后对于lm和ok都为0的情况记忆化一下即可 啊bzoj不知道为啥给cmat 阅读全文
posted @ 2018-08-01 22:51 lokiii 阅读(163) 评论(0) 推荐(0)
摘要:非典型数位dp 先预处理出f[i][j][k]表示从后往前第i位为j时k的个数,然后把答案转换为ans(r) ans(l 1),用预处理出的f数组dp出f即可(可能也不是dp吧……) cpp include include using namespace std; long long l,r,t[2 阅读全文
posted @ 2018-07-26 22:32 lokiii 阅读(141) 评论(0) 推荐(0)