CCF-再卖菜-20180904

时间:2023-12-22 14:22:08

可以说这道题出的不错,我是用动态规划做的 ( 严谨点说应该是记忆化搜索,我是递归版本,非递归我不会啊...

题意分析:

x1  x2  x3

已知 x1+x2=t1或t1+1

x1+x2+x3=t2 | t2+1 | t2+2

x2+x3=t3 |  t3+1

如果我们从x1=1 开始搜索, 那么组成了一颗搜索树 每次有三次分叉, 一共有100层  3^100 太吓人了

还好的是 t1,t2,t3 数据规模不大 我们可以合并很多重复的状态,经行记忆化搜索

那么这道题核心就在于对状态的定义了:

我们发现 x4+x5+x6=t  我们只要知道x4,x5,就可以确定x6和剩余的序列 与前面的x1,x2,x3无关

dp[i][x1][x2]:   对于第i天的菜价,在x(i-1)=x1, xi=x2,取值下 最小字典序x(i+1)的取值 ,如无解取0

//  代码飞了 话说CCF不能查看代码真的是.... 待补