题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4352
 
题目意思:
求区间L到R之间的数A满足A的的数位的最长递增序列的长度为K的数的个数。
解题思路:
数位dp+LIS+状态压缩
根据求LIS的nlogn的思想,由于k最多为10,也就是最长递增序列的长度最多为10,可以状态压缩10位,维护前面的已选的递增序列,并及时更新。
dp[i][j][k]表示后面还有i位,前面状态为k,总共需要最长递增序列为j时的总数。
代码:
更新时用两种方式实现都可以。
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib
 
                   
                   
                   
                   该博客主要介绍了如何利用数位动态规划(DP)结合最长递增子序列(LIS)的方法解决HDU 4352题目。博主探讨了当要求区间L到R之间数的数位构成的最长递增序列长度为K的数的个数时,如何通过状态压缩来优化算法,将状态压缩为10位,并详细阐述了dp状态转移方程的设置及实现策略。
该博客主要介绍了如何利用数位动态规划(DP)结合最长递增子序列(LIS)的方法解决HDU 4352题目。博主探讨了当要求区间L到R之间数的数位构成的最长递增序列长度为K的数的个数时,如何通过状态压缩来优化算法,将状态压缩为10位,并详细阐述了dp状态转移方程的设置及实现策略。
           最低0.47元/天 解锁文章
最低0.47元/天 解锁文章
                           
                       
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   9241
					9241
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            