zoukankan      html  css  js  c++  java
  • CSU 1205: Rectangles II

    题目链接:http://122.207.68.93/OnlineJudge/problem.php?id=1205

    最后没时间写了...也没去测试,O(n^4)次方的方法应该过不去吧,优化为O(n^3)的方法:

    枚举上下边界,然后再枚举左边界,注意,右边界不需要枚举,左边界前进的时候,只需用上一次的位置继续往右试探,这样复杂度就是0(n^3)了。

    CSU 1205
    #include<stdio.h>
    #include<string.h>
    int sum[110];
    int map[110][110];
    int main()
    {
        int T,n,m,s,i,j,k;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d%d",&n,&m,&s);
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                {
                    scanf("%d",&map[i][j]);
                }
            }
            int cnt=0;
            for(i=1;i<=n;i++)
            {
                memset(sum,0,sizeof(sum));
                for(j=i;j<=n;j++)
                {
                    for(k=1;k<=m;k++)
                    {
                        sum[k]+=map[j][k];
                    }
                    int pos=1,buf=0;
                    for(k=1;k<=m;k++)
                    {
                        while(pos<=m&&(buf+sum[pos])<=s)
                        {
                            buf+=sum[pos++];
                        }
                        cnt+=pos-k;
                        buf-=sum[k];
                    }
                }
            }
            printf("%d\n",cnt);
        }
        return 0;
    }
  • 相关阅读:
    899. Orderly Queue
    856. Score of Parentheses
    833. Find And Replace in String
    816. Ambiguous Coordinates
    770. Basic Calculator IV
    冒泡排序(Bubble Sort)
    C
    B
    A
    HDOJ-1391
  • 原文地址:https://www.cnblogs.com/SolarWings/p/3001672.html
Copyright © 2011-2022 走看看