zoukankan      html  css  js  c++  java
  • Codeforces Round #545 (Div. 2)C(离散化,思维,PAIR排序)

    #include<bits/stdc++.h>
    using namespace std;
    int a[1007][1007];
    pair<int,int>p1[1007],p2[1007];
    int rk1[1007][1007],rk2[1007][1007],no1[1007][1007],no2[1007][1007];
    int main(){
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                scanf("%d",&a[i][j]);
            }
        }
        int cnt=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                p1[j].first=a[i][j];
                p1[j].second=j;
            }
            sort(p1+1,p1+1+m);//这一行排序
            cnt=0;
            for(int j=1;j<=m;j++){
                if(j==1||p1[j].first!=p1[j-1].first)
                    cnt++;//从西向东计数,将相等的点缩起来
                rk1[i][p1[j].second]=cnt;
            }
            cnt=0;
            for(int j=m;j>=1;j--){//从东向西计数
                if(j==m||p1[j].first!=p1[j+1].first)
                    cnt++;
                no1[i][p1[j].second]=cnt;
            }
        }
        cnt=0;
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                p2[j].first=a[j][i];
                p2[j].second=j;
            }
            sort(p2+1,p2+1+n);//列排序
            cnt=0;
            for(int j=1;j<=n;j++){
                if(j==1||p2[j].first!=p2[j-1].first)
                    cnt++;//从北向南计数
                rk2[i][p2[j].second]=cnt;
            }
            cnt=0;
            for(int j=n;j>=1;j--){
                if(j==n||p2[j].first!=p2[j+1].first)
                    cnt++;//从南向北
                no2[i][p2[j].second]=cnt;
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                int ans=max(rk1[i][j],rk2[j][i])+max(no1[i][j],no2[j][i])-1;//西北最值加上东南最值减去自身多数的一次
                printf("%d ",ans);
            }
            printf(" ");
        }
        return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    hdu1006
    矩阵快速幂计算hdu1575
    MATLAB逻辑函数
    pair类型
    MATLAB基础操作符与数据格式显示
    MATLAB矩阵基础运算
    状态压缩DP常遇到的位运算
    HDU1565方格取数
    C语言的数组名和对数组名取地址
    ubunut 12.04 (64bit) android编译环境搭建
  • 原文地址:https://www.cnblogs.com/ldudxy/p/10510958.html
Copyright © 2011-2022 走看看