• [HAOI2007]理想的正方形


    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <deque>
    #include <map>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    int a,b,n,tt[1005][1005],gg[1005][1005],mm[2][1005][1005];
    pair<int,int>q[1005];
    void init(){
        cin>>a>>b>>n;
        range(i,1,a)range(j,1,b)cin>>tt[i][j];
    }
    void cal(int x){
        range(i,1,a){
            int left=1,right=0;
            range(j,1,b){
                while(left<=right&&j-q[left].second>=n)++left;
                if(!x)while(left<=right&&tt[i][j]>=q[right].first)--right;
                else while(left<=right&&tt[i][j]<=q[right].first)--right;
                q[++right]=make_pair(tt[i][j],j);
                gg[i][j]=q[left].first;
            }
        }
        range(j,n,b){
            int left=1,right=0;
            range(i,1,a){
                while(left<right&&i-q[left].second>=n)++left;
                if(!x)while(left<=right&&gg[i][j]>=q[right].first)--right;
                else while(left<=right&&gg[i][j]<=q[right].first)--right;
                q[++right]=make_pair(gg[i][j],i);
                mm[x][i][j]=q[left].first;
            }
        }
    }
    void solve(){
        cal(0);cal(1);
        int ans=1<<30;
        range(i,n,a)
        range(j,n,b)ans=min(ans,mm[0][i][j]-mm[1][i][j]);
        cout<<ans<<endl;
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    RTMP命令亲自测试记录
    如何在 i5 上实现 20 倍的 Python 运行速度?
    百倍加速!Python量化策略的算法性能提升指南
    谷歌推出 Python 性能加速方案
    用Cython加速Python到“起飞”
    Python GPU加速
    金融数学太复杂?看完这10部电影会不会轻松点!
    金融数学攻略+书单
    耳朵如何保养
    DataOps Reading Notes
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9339298.html
Copyright © 2020-2023  润新知