差分数列,推公式然后达标开始没想到打表超时3时,其实应该想到打表的,因为数据有10000组经验尚浅啊#include #include #include #includeusing namespace std;const int maxn=2001;int dp[maxn][maxn];int main(void){ int i,k,n,m; int t; for(i=1; i<=maxn; i++) dp[1][i]=i%1007; for(i=2; i<=maxn; i++) { for(k=1; k<i; k++) dp[i][k]=0; dp[i][i]=1; for(k=i+1; k<=maxn; k++) dp[i][k]=(dp[i][k-1]%1007+dp[i-1][k-1]%1007)%1007; } scanf("%d",&t); while(t--) { scanf("%d %d",&m,&n); printf("%d\n",dp[m][n]%1007); } return 0;}