重构一下就过了,不知道之前错在哪里。
#includeusing namespace std;typedef unsigned long long ull;const int INF=0x3f3f3f3f;int solve();int main() {#ifdef Yinku freopen("Yinku.in","r",stdin);#endif // Yinku solve();}int dp[6][6][101][1<<11];//dp[w][h][t][ch] 表示t时间xy处的接到西瓜状态为ch的最小步数int g[6][6][101];//g[w][h][t] 表示t时间xy处的西瓜有哪些int h,w;inline void update(int x,int y,int t,int ost,int nst) { if(g[x][y][t+1]&(1<<0)) return; if(x>1) dp[x][y][t+1][nst]=min(dp[x][y][t+1][nst],dp[x-1][y][t][ost]+1); if(x 1) dp[x][y][t+1][nst]=min(dp[x][y][t+1][nst],dp[x][y-1][t][ost]+1); if(y (g[nx][ny][t])<<" "; } cout<