建议新增数据

P3146 [USACO16OPEN] 248 G

~~然而标签给的是区间dp........~~
by WSEDSWZD @ 2018-07-31 17:51:24


官方题解?(你写的?)
by 微雨燕双飞 @ 2018-08-15 14:26:34


~~这不就是区间DP练手题吗……~~洛谷较高级算法的低端练手题已经够匮乏了,大佬能不能给初学者留条活路QWQ
by ArachnidaKing @ 2018-10-14 08:57:46


练手题也应该卡掉错算法啊
by suxxsfe @ 2019-08-17 22:13:20


@[Marser](/user/17930) 区间 DP 应该是正确的,之所以出现 $Hack$ 数据是因为一些逻辑上的错误。 题解普遍的核心转移 : ```cpp if (f[i][k] == f[k + 1][j]) { f[i][j] = max(f[i][j], f[i][k] + 1); } ``` 正确的 : ```cpp if (f[i][k] == f[k + 1][j] && f[i][k]) { f[i][j] = max(f[i][j], f[i][k] + 1); } ``` 错误原因:若 ``f[i][k]`` 与 ``f[k + 1][j]`` 都无法由更小的区间合并得到,它们的值便都是 $0$,原转移方程此时会将 ``f[i][j]`` 置为 $1$ 而导致错误。改正后的代码可以应对这一组数据: ```cpp 8 2 1 1 2 4 2 3 4 ``` 正确:4;错解:5 不过,我十分同意您加强数据的观点(~~您快造呀~~) 如果有任何问题(如仍能找到 $Hack$ 数据),麻烦 at 我,不胜感激!
by hkxadpall @ 2020-01-13 21:37:56


@[hkxadpall](/user/85848) 原来是这样。。。┭┮﹏┭┮,一开始我还以为我第一次做出来了区间DP的题。。后来测了一下你的hack数据。发现我错了。。。 ①区间长度为1的时候没有预处理取最大值max ②小区间dp[i][k]==dp[k+1][j]==0的时候,我也把它们合并了。。导致dp[i][j]至少为1了。。。 所以,,,这题的数据好水啊。。。
by silver—摆渡人 @ 2020-02-13 18:58:49


@[hkxadpall](/user/85848) 正解不是3吗?不相等的数也能合并?
by Herio @ 2020-04-16 15:42:58


@[HeHao147989](/user/257206) emm好像是的诶……
by hkxadpall @ 2020-04-25 12:19:18


@[HeHao147989](/user/257206) 好像正解是3
by hkxadpall @ 2020-04-25 12:19:32


|