zoukankan      html  css  js  c++  java
  • bzoj1057: [ZJOI2007]棋盘制作

    为什么我看了路牌才会做啊QWQ我好菜啊QWQ

    对于一个点预处理出符合条件的情况下往后最多能选多少个

    为了方便起见我们把偶数行的点全部取反

    那么就变成单调栈裸题了

    这题数据太水我最后忘清栈都能A-_-!

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    typedef long long LL;
    
    int mp[2100][2100],L[2][2100][2100];
    int top,sta[2100],pos[2100];
    int main()
    {
        freopen("a.in","r",stdin);
        freopen("a.out","w",stdout);
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                scanf("%d",&mp[i][j]);
                if(i%2==0)mp[i][j]^=1;
            }
        memset(L,0,sizeof(L));
        for(int i=1;i<=n;i++)
        {
            L[mp[i][m]][i][m]=1;
            for(int j=m-1;j>=1;j--)
                L[mp[i][j]][i][j]=(mp[i][j]!=mp[i][j+1])*L[mp[i][j+1]][i][j+1]+1;
        }
        
        int mx1=0,mx2=0;
        for(int w=0;w<=1;w++)
        {
            for(int j=1;j<=m;j++)
            {
                top=1,sta[1]=1,pos[1]=1;
                for(int i=2;i<=n;i++)
                {
                    while(top!=0&&L[w][i][j]<=L[w][sta[top]][j])
                    {
                        int a=L[w][sta[top]][j],b=i-pos[top];
                        if(a>b)swap(a,b);
                        mx1=max(mx1,a*a);
                        mx2=max(mx2,a*b);
                        top--;
                    }
                    sta[++top]=i,pos[top]=sta[top-1]+1;
                }
                while(top!=0)
                {
                    int a=L[w][sta[top]][j],b=n-pos[top]+1;
                    if(a>b)swap(a,b);
                    mx1=max(mx1,a*a);
                    mx2=max(mx2,a*b);
                    top--;
                }
            }
        }
        printf("%d
    %d
    ",mx1,mx2);
        return 0;
    }
  • 相关阅读:
    下载视频
    009 逻辑 + MFC CString
    008 浅拷贝与深拷贝
    007 operator
    006 this指针原理
    005 逻辑 + STL list
    004 list::sort
    003 逻辑 + mfc CList
    001 C++历史和思想
    并查集模板
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/9881057.html
Copyright © 2011-2022 走看看