在dp问题中如果遇到问题,没有什么是加一维度不能解决的,如果不能,再加一维度。
#include#include #include #include #include using namespace std;int main(){ int t; scanf("%d",&t); while(t--) { int n,v,k; scanf("%d%d%d",&n,&v,&k); int dp[v+1][k+1],w[n],c[n]; for(int i=0;i =ic;--iv) { int tempA[k+1],tempB[k+1]; int ia,ib,ik; ia = ib = ik = 0; for(;ik tempB[ib]) { dp[iv][ik] = tempA[ia++]; } else { dp[iv][ik] = tempB[ib++]; } if(ik==0 || dp[iv][ik] != dp[iv][ik-1]) { ++ik; } } } } printf("%d\n",dp[v][k-1]); } return 0;}