关于这道题为什么只能用刷表法

P2831 [NOIP2016 提高组] 愤怒的小鸟

刷表法: ```cpp rep(i, 0, tot) { for(int j : se) if((j | i) <= tot) MIN(f[j | i], f[i] + 1); } ``` 填表法: ```cpp rep(i, 0, tot) { for(int j : se) if((i & j) == j) MIN(f[i], f[i ^ j] + 1); } ```
by 8atemak1r @ 2022-10-21 22:57:57


我猜你是i——j曲线上的鸟只要打过就不打i——j了,或者是根本没判定是不是打过,所以有时候会因为曲线上其他的鸟打过了而不一起打i——j,反而是分开打。用第一种方法就没有这个问题。 我也是这么错的
by Luke_li @ 2023-12-13 21:38:53


|