zoukankan      html  css  js  c++  java
  • neuoj Blurred Pictures(小思维题

    https://oj.neu.edu.cn/problem/1505

    题意:一张由n*n的照片,每行从第ai个像素点到第bi个像素点是非模糊点,要求找出最大的正方形,该正方形中的像素都是非模糊点。

    思路:这题有个很巧的地方"luckily, all the non-blurred pixels are connected in such a way that any horizontal or vertical line drawn between two non-blurred pixels goes only through non-blurred pixels. "

    这就否定了以下这种情况,那就可以O(n)暴力移动边界了,枚举第1~n行为上边界,ans从1开始,然后对于第i行判定ans是否可行,若可行则ans++继续该行的判定,否则i++开始下一行的判定。每次判定只需判定上边界和下边界两行即可。

    11111

    11100

    11111

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1e5+10;
    int l[maxn],r[maxn];
    int n;
    
    inline bool check(int up,int d){
        if(l[up]+d-1>r[up]) return false;
        if(up+d-1>n) return false;
        int down = up+d-1;
        int left = max(l[up],l[down]);
        if(left+d-1<=r[up]&&left+d-1<=r[down]) return true;
        return false;
    }
    
    
    int main(){
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
        while(cin>>n){
            for(int i=1;i<=n;i++) cin>>l[i]>>r[i];
            int ans = 1;
            for(int i=1;i<=n;i++) {
                while(check(i,ans+1)) ++ans;
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    mysql存储过程
    命令简写 ~/.bash_aliases
    TestCafe 快速上手 (三)
    TestCafe 快速上手 (二)
    OWASP 文档
    读书笔记
    读书笔记
    类数组转化为真正的数组
    Vue子组件向父组件传递数据
    node.js取参四种方法req.body,req.params,req.param,req.body
  • 原文地址:https://www.cnblogs.com/wzgg/p/11479030.html
Copyright © 2011-2022 走看看