可以说这道题出的不错,我是用动态规划做的 ( 严谨点说应该是记忆化搜索,我是递归版本,非递归我不会啊...
题意分析:
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不能查看代码真的是.... 待补
抓住青春的尾巴。。。