直接设f[i][j][k][l][2]是在(i,j)时两人分数是k,l,复杂度会爆掉
但其实只需要知道两人分数只差就行了
所以设f[i][j][k][2],k是分数之差%(K+1),最后一位表示该谁走了
1 #include2 #define pa pair 3 #define CLR(a,x) memset(a,x,sizeof(a)) 4 using namespace std; 5 typedef long long ll; 6 const int maxn=805,maxk=20,P=1e9+7; 7 8 inline ll rd(){ 9 ll x=0;char c=getchar();int neg=1;10 while(c<'0'||c>'9'){ if(c=='-') neg=-1;c=getchar();}11 while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();12 return x*neg;13 }14 15 int N,M,K,w[maxn][maxn];16 int f[maxn][maxn][maxk][2];17 18 int main(){19 //freopen(".in","r",stdin);20 int i,j,k;21 N=rd(),M=rd();K=rd()+1;22 for(i=1;i<=N;i++){23 for(j=1;j<=M;j++)24 w[i][j]=rd();25 }26 int ans=0;27 for(i=1;i<=N;i++){28 for(j=1;j<=M;j++){29 for(k=0;k