zoukankan      html  css  js  c++  java
  • bzoj5085: 最大

    暴力是4方的,开始我只3方(扫描的时候更新当前最大)

    二分+暴力可以做到m^2logMAX

    二分答案,暴力枚举可行的两个位置形成一段,对于段,最多只会有m^2种情况。

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    
    int n,m,a[1100][1100],bef[1100];
    bool v[1100][1100];
    bool check(int mid)
    {
        memset(v,false,sizeof(v));
        for(int i=1;i<=n;i++)
        {
            int last=0;
            memset(bef,0,sizeof(bef));
            for(int j=1;j<=m;j++)
            {
                if(!(a[i][j]<mid))
                {
                    for(int k=last;k;k=bef[k])
                    {
                        if(v[k][j])return true;
                        v[k][j]=true;
                    }
                    bef[j]=last;
                    last=j;
                }
            }
        }
        return false;
    }
    int main()
    {
        freopen("a.in","r",stdin);
        freopen("a.out","w",stdout);
        int mmin=2147483647,mmax=0;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                scanf("%d",&a[i][j]);
                mmax=max(mmax,a[i][j]);
                mmin=min(mmin,a[i][j]);
            }
                
        int l=mmin,r=mmax,ans;
        while(l<=r)
        {
            int mid=(l+r)/2;
            if(check(mid))
            {
                ans=mid;
                l=mid+1;
            }
            else r=mid-1;
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    Shell脚本编程-02-----shell编程之条件语句
    ELK 简介
    Linux 下的网卡文件配置
    Tomcat 简介
    Docker 基本操作
    zabbix 介绍
    CentOS 上搭建 Kubernetes 集群
    Docker 简介
    yum 源的配置安装
    Docker 入门
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/9599388.html
Copyright © 2011-2022 走看看