E、矩阵

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll f[1017][1017];   //f[i][j]表示第一行i个数,第二行j个数的方案数 
int main(){
    f[0][0]=1;
    for(int i=1;i<=1010;++i){
        for(int j=0;j<=i;++j){  //因为第一行一定先放,所以 j<=i //未操作时的f[i][j]表示 第(第一行i个数,第二行j个数)时的数 
            if(i-1>=j){       // 若f[i][j]放第一行,则要保证 i-1>=j(上一次状态的第一行的个数一定比第二行的个数多) 
                f[i][j]+=f[i-1][j]%2020;
            }      
            f[i][j]+=f[i][j-1]%2020;  //放第二行的情况 
        }
    }
    cout << f[1010][1010]%2020 << endl;
    return 0;
}