CF778E Selling Numbers

DP

首先可以自然的想到可以设$dp[i][s]$表示到后$i$位,当前进位的集合为$s$的最大代价,看上去这是一个$2^n$的状态,但是每一位的进位集合最多只有$n$种情况

考虑将每一个数的到当前位的后缀排序(非减),如果要进位那么一定是这些排序过的后缀序列中某一个后缀都是进位的,那么可以改变下$dp$状态,设$dp[i][j]$表示到后$i$位,进位的是$j$到$n$这个后缀集合

那么每一次进行DP转移的时候,可以先把当前的后缀排好序(利用基数排序),然后进行DP转移

DP转移较为复杂,可以考虑一个一个考虑进位并且维护$A$中这一位为$0$到$9$的代价和当前位的进位情况,当加入一个需要进位(也即是上一位进位)的数时,更新每一个的数的代价和进位情况

还需要注意如果超出最高位,$0$的代价为$0$

代码

posted @ 2020-11-24 07:23  SevenDawns  阅读(183)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end