HDU 4352 XHXJ's LIS HDU(数位DP)

HDU 4352 XHXJ's LIS HDU

题目大意

给你L到R区间,和一个数字K,然后让你求L到R区间之内满足最长上升子序列长度为K的数字有多少个

solution

简洁明了的题意总是让人无从下手
数字——数位DP
根据题意定义数组
第一维:数位
第二维:数位状态01串
第三维:个数K的大小
说说心路历程:
写的时候没有注意到前导零的可能型(通过看大佬的blog发现的

问题就是如何进行状态转移(手动@LC参考了LC的题解
我们用一个长度为10的二进制数表示数字几有没有被选到
如果为0,则表明该位对应的数字是最长上升子序列的一部分,反之则不是
每次遍历时,如果新加入的数是最大的,我们就直接把该数代表的位置置为1就可以
如果新加入的数不是最大的,我们就把第一个小于等于该位的数置为0,把新加入的位数置为1
统计长度时只要看有几个1就可以了

题解看懂了,code未完成

上一篇:最长上升子序列(LIS)算法(附Codeforces Round #641 (Div. 2),B题题解)


下一篇:打开操作系统数据执行保护,关闭操作系统数据执行保护