F题不能直接用二维数组列一个表,然后再把表上的值加起来吗?为什么会出现算法复杂度过大的情况呢?? #include<stdio.h> #define ll long long const ll mod=1000000007; int NM[2001][2001]; int main() { ll H, i, j, sum, x, y, z, count,temp; int N, M; scanf("%d%d%lld", &N, &M, &H); for(j=0; j<=N; j++) for(i=0; i<=M; i++) NM[j][i]=0; for(count=1; count<=H; count++) { scanf("%lld%lld%lld", &x, &y, &z); for(j=1; j<=N; j++) { NM[j][y]+=z; NM[j][y]%=mod; } for(i=1; i<=M; i++) { NM[x][i]+=z; NM[j][y]%=mod; } NM[x][y]-=z; } sum=0; for(j=1; j<=N; j++) { for(i=1; i<=M; i++) { temp=(NM[j][i]*(i+j))%mod; sum=(sum+temp)%mod; } } printf("%lld", sum); return 0; }