1.记忆化搜索就可以了 #include<bits/stdc++.h> using namespace std; const int N=2e6+10; vector<int>a; int dp[N][2][4]; int dfs(int u,int col,int k) { int &res=dp[u][(col==-1?0:1)][k]; if(res!=-1)return res; if(u==(int)a.size()-1) { if(col!=-1)return a[u]; return 0...