排序+数据结构

将每一行(每一列)都排个序,并将原位置的在这一行(列)中的排行记录在一个数组里

注意,要将楼高度相同的元素看作一个元素

如 1 1 4 5 6 8 8,则排行是

     1 1 2 3 4 5 5

处理好后,枚举每一个十字路口,

若当前的处在的行的排行大于列的排行,则当前这个元素之后的列中元素应以行的排行开始依次递增,

若当前的处在的行的排行小于列的排行,则当前这个元素之后的行中元素应以列的排行开始依次递增,

注意,若当前的处在的行的排行等于列的排行时,则要从如上两个方面同时考虑,取最大值。

#include <bits/stdc++.h>
using namespace std;
int n,m,a[1010][1010],hh[1010][1010],ll[1010][1010];
int mh[1500],ml[1500];
struct node
{
int wh,num;
};
vector <node> h[1010],l[1010];
bool cmp(node a,node b)
{
return a.num<b.num;//以高度降序排序
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
scanf("%d",&a[i][j]);
}
}
for (int i=1;i<=n;i++)//处理行的情况
{
node t;
for (int j=1;j<=m;j++)
{
t.num=a[i][j];
t.wh=j;
h[i].push_back(t);
}
sort(h[i].begin(),h[i].end(),cmp);
int how=0;
for (int j=0;j<m;j++)
{
if (j!=0)
{
if (h[i][j-1].num==h[i][j].num)
how++;//重复的有多少个
}
hh[i][h[i][j].wh]=j+1-how;//记录排行
}
mh[i]=m-how;//最大值
}
for (int j=1;j<=m;j++)//处理列的情况
{
node t;
for (int i=1;i<=n;i++)
{
t.num=a[i][j];
t.wh=i;
l[j].push_back(t);
}
sort(l[j].begin(),l[j].end(),cmp);
int how=0;
for (int i=0;i<n;i++)
{
if (i!=0)
{
if (l[j][i-1].num==l[j][i].num)
how++;
}
ll[l[j][i].wh][j]=i+1-how;
}
ml[j]=n-how;
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
int cha;
if (hh[i][j]==ll[i][j])//如上
{
int cha1;
cha1=mh[i]-hh[i][j];
cha=ml[j]-ll[i][j];
printf("%d ",max(max(hh[i][j]+cha,mh[i]),max(ll[i][j]+cha1,ml[j])));
}
else
if (hh[i][j]>ll[i][j])
{
cha=ml[j]-ll[i][j];
printf("%d ",max(hh[i][j]+cha,mh[i]));
}
else
if (hh[i][j]<ll[i][j])
{
cha=mh[i]-hh[i][j];
printf("%d ",max(ll[i][j]+cha,ml[j]));
}
}
printf("\n");
}
}

CF1137A/1138C Skyscrapers的更多相关文章

  1. uoj #111. 【APIO2015】Jakarta Skyscrapers

    #111. [APIO2015]Jakarta Skyscrapers 印尼首都雅加达市有 NN 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 00 到 N−1N−1.除了这 NN 座摩 ...

  2. Skyscrapers Aren’t Scalable

     Skyscrapers Aren't Scalable Michael Nygard WE oFTEn HEAR SoFTWARE EnginEERing CoMpAREd to building ...

  3. Skyscrapers Covered in Solar Pancels【太阳能电池板覆盖的摩天大楼】

    Skyscrapers Covered in Solar Panels An office tower on Miller Stree in Manchester is completely cove ...

  4. Codeforces Round #622(Div 2)C2. Skyscrapers (hard version)

    题目链接 : C2. Skyscrapers (hard version) 题目描述 : 与上一道题类似,只是数据范围变大, 5e5, 如果用我们原来的方法,铁定是超时的. 考察点 : 单调栈,贪心, ...

  5. Codeforces Round #622(Div 2) C1. Skyscrapers (easy version)

    题目链接: C1. Skyscrapers (easy version) 题目描述: 有一行数,使得整个序列满足 先递增在递减(或者只递增,或者只递减) ,每个位置上的数可以改变,但是最大不能超过原来 ...

  6. Codeforces Round #622 C2.Skyscrapers (hard version)

    This is a harder version of the problem. In this version n≤500000n≤500000 The outskirts of the capit ...

  7. Codeforces Round #622 (Div. 2) C1. Skyscrapers (easy version)(简单版本暴力)

    This is an easier version of the problem. In this version n≤1000n≤1000 The outskirts of the capital ...

  8. Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈,递推)

    Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version) 题意: 你是一名建筑工程师,现给出 n 幢建筑的预计建设高度,你想建成峰状, ...

  9. UOJ 216 Jakarta Skyscrapers

    http://uoj.ac/problem/216 题意:给定A,B,C,如果集合中有数i,j(i>j),那么集合就会增加i-j这个数,问有没有在初始集合为{A,B}400步内生成C的方案. 思 ...

随机推荐

  1. 脚手架安装react

    //1 npm install -g create-react-app //2 create-react-app xxx //xxx项目名称 //3 cd xxx //xxx项目名称 npm star ...

  2. 第0天 | 12天搞定Pyhon,前言

    依稀记得,在2014年的某一天,一位运营电商平台的多年好朋友,找我帮忙:一个月内,实现抓取竞争对手在某电商平台上的所有产品信息并统计每个产品的点击率. 说出来有些不好意思,那些年,参与过的产品挺多的, ...

  3. 如何快速构建React组件库

    前言 俗话说:"麻雀虽小,五脏俱全",搭建一个组件库,知之非难,行之不易,涉及到的技术方方面面,犹如海面风平浪静,实则暗礁险滩,处处惊险- 目前团队内已经有较为成熟的 Vue 技术 ...

  4. Java第一课!

    public class Text { public static void main(String[] args) { int a=100; //赋值a=100 System.out.println ...

  5. k8s集群调度方案

    Scheduler是k8s集群的调度器,主要的任务是把定义好的pod分配到集群节点上 有以下特征: 1  公平   保证每一个节点都能被合理分配资源或者能被分配资源 2  资源高效利用   集群所有资 ...

  6. MeteoInfoLab脚本示例:多坐标系

    绘图的时候首先要有坐标系(Axes),可以用axes命令创建,如果没有创建在绘图时会自动创建一个.参数里的position是用来置顶坐标系的图形(figure)中的位置的,通过位置置顶,可以将多个坐标 ...

  7. Android Jetpack从入门到精通(深度好文,值得收藏)

    前言 即学即用Android Jetpack系列Blog的目的是通过学习Android Jetpack完成一个简单的Demo,本文是即学即用Android Jetpack系列Blog的第一篇. 记得去 ...

  8. centos8安装java jdk 13

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  9. laravel job 队列

    1.数据库建表 php artisan queue:table<span> </span>//队列任务表 php artisan queue:failed-table<s ...

  10. python爬虫获取下一页

    from time import sleep import faker import requests from lxml import etree fake = faker.Faker() base ...