2 条题解

  • 0
    @ 2024-11-18 19:12:36

    #include<stdio.h>

    int main() { int n,m; scanf("%d",&n); scanf("%d",&m); int a[n][m]; int s[m]; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf("%d",&a[i][j]; } } int sum=0; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { sum+=a[j][i]; } s[i]=sum; sum=0; } int max=s[0]; for(int k=0;k<m;k++) { if(max<s[k]) { max=s[k]; } } printf("%d",max); return 0; }

    • 0
      @ 2024-11-18 15:13:44

      观察可以发现,对于每个数组,无论取什么样的区间,实际上都等价于取区间中的一个数。也就是每个数组中取一个数(即每次都让l = r),然后求求和的最大值是多少

      再看数据范围 n * m = 2e6

      直接暴力即可

      • 1

      信息

      ID
      1071
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      递交数
      82
      已通过
      12
      上传者