地址:http://acm.uestc.edu.cn/#/problem/show/1338

思路:

郭大侠与英雄学院

Time Limit: 6000/2000MS (Java/Others)     Memory Limit: 225535/225535KB (Java/Others)
Submit Status

大部分的人类,在这个时代里都拥有名为“个性”的力量,但有力量之人却不一定都属於正义的一方。只要邪恶出现的地方,必定会有英雄挺身而出拯救众人。一名天生没有力量的少年——郭大侠从小就憧憬一位顶尖英雄,而他的梦想就是成为伟大的英雄,可是,没有力量的他能实现自己的梦想吗?虽然困难重重,少年却依旧不放弃,朝著自己的目标勇往前进!

……

尽管郭大侠没有个性,但是郭大侠的确是一个拥有超强意志的“英雄”。

所谓的英雄,便是能够在大家无动于衷的时候,挺身而出!

今天,郭大侠出现了!

郭大侠面对一个n∗mn∗m的矩阵,每个矩阵的每一个位置都有一个怪物。

郭大侠为了更好的击败他们,他的第一个任务就是分析怪物的战斗力。

为了简化自己分析时候的计算,郭大侠需要得到另外一个n∗mn∗m的矩阵。

这个矩阵满足以下要求:

1.这个新矩阵每一行,每一列中的大小关系和原矩阵一样。

2.这个新矩阵的最小值应该尽量小;保证最小值最小的情况下,使得第二小的值尽量小……使得最大值尽量小。

现在郭大侠特别忙,请你帮助郭大侠输出这个矩阵吧!

Input

第一行n,m表示矩阵的大小

接下来n行,每行m个整数,表示怪物的战斗力

保证:

1<=n∗m<=10000001<=n∗m<=1000000

怪物的战斗力是int范围内的数。

Output

输出一个新的矩阵~

新的矩阵中,最小的数至少为1哦。

Sample input and output

Sample Input Sample Output
3 3
1 2 3
4 5 6
7 8 9
1 2 3
2 3 4
3 4 5
2 2
1 4
3 2
1 2
2 1

思路:

最基本的思路是对所有数排个序,然后一个一个填就好了,然而因为同行同列中有相同的数就麻烦了。

所以每次把同行同列中的的所有相同的的数拖进同一个并查集,用并查集来维护相同数应该放的值

就这样一层一层的合并,直到填完。。

不过输出的时候就要用并查集里记录的那个答案来输出。。。(话说这题想了我一万年,,,,

 #include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <vector>
#include <cstdlib>
#include <string> #define PI acos((double)-1)
#define E exp(double(1))
const int MAX=1e6+;
using namespace std;
struct node
{
int v,x,y;
}a[MAX];
int ans[MAX],xmax[MAX],ymax[MAX],hx[MAX],hy[MAX];
int root[MAX];
int fd(int x)
{
return x!=root[x]?root[x]=fd(root[x]):x;
}
void join(int x,int y)
{
int a=fd(x),b=fd(y);
if(a!=b)root[a]=b;
}
bool cmp(struct node c,struct node b)
{
return c.v<b.v;
}
int main (void)
{
int n,m;
cin>>n>>m;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
scanf("%d",&a[(i-)*m+j].v);
a[(i-)*m+j].x=i;a[(i-)*m+j].y=j;
}
sort(a+,a+n*m+,cmp);
memset(xmax,,sizeof(xmax));
memset(ymax,,sizeof(ymax));//全部设为0,
memset(ans,,sizeof(ans));
int same=;//记录相同元素
for(int i=;i<=n*m;i++)
root[i]=i;
for(int i=;i<=n*m;i++)
{
if(i!=n*m && a[i].v==a[i+].v)
continue;
for(int j=same;j<=i;j++)
{
hx[a[j].x]=hy[a[j].y]=(a[j].x-)*m+a[j].y;
}
for(int j=same;j<=i;j++)
{
join(hx[a[j].x],(a[j].x-)*m+a[j].y);
join(hy[a[j].y],(a[j].x-)*m+a[j].y);
}
for(int j=same;j<=i;j++)
{
int x = a[j].x,y=a[j].y;
int rt = fd((a[j].x-)*m+a[j].y);
ans[rt]=max(ans[rt],max(xmax[x],ymax[y])+);
}
for(int j=same;j<=i;j++)
{
int x = a[j].x,y=a[j].y;
xmax[x]=max(xmax[x],ans[fd((a[j].x-)*m+a[j].y)]);
ymax[y]=max(ymax[y],ans[fd((a[j].x-)*m+a[j].y)]);
}
same=i+;
}
for(int i=;i<=n*m;i++)
{
if(i%m==)
printf("%d \n",ans[fd(i)]);
else
printf("%d ",ans[fd(i)]);
}
return ;
}

cdoj1338郭大侠与英雄学院的更多相关文章

  1. cdoj 1334 郭大侠与Rabi-Ribi Label:贪心+数据结构

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 最近 ...

  2. cdoj 1342 郭大侠与甲铁城 树状数组+离线

    郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  3. cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  4. CDOJ 1284 苦恼的郭大侠 map启发式合并

    苦恼的郭大侠 题目连接: http://acm.uestc.edu.cn/#/problem/show/1284 Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行 ...

  5. cdoj1342郭大侠与甲铁城

    地址:http://acm.uestc.edu.cn/#/problem/show/1342 题目: 郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     ...

  6. cdoj1339郭大侠与线上游戏

    地址:http://acm.uestc.edu.cn/#/problem/show/1339 题目: 郭大侠与线上游戏 Time Limit: 6000/2000MS (Java/Others)    ...

  7. cdoj1337郭大侠与阴阳家

    地址:http://acm.uestc.edu.cn/#/problem/show/1337 思路: 郭大侠与阴阳家 Time Limit: 3000/4000MS (Java/Others)     ...

  8. cdoj1334郭大侠与Rabi-Ribi

    地址:http://acm.uestc.edu.cn/#/problem/show/1334 题目: 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Other ...

  9. 郭大侠与Rabi-Ribi (优先队列)

    最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在地上跑来跑去,好萌好萌呀~ 这个游戏是这样玩的,郭大侠作为一个主角,拿着一个小锤子,他的 ...

随机推荐

  1. jsp页面定义的map

    <script type="text/javascript">function Map(){ this.elements = new Array(); //删除MAP所 ...

  2. 【PM日记】处理事务的逻辑

    首先你得时刻搞清楚在你的当下什么类型事情是最重要的,是与人交流,是推进项目,还是需要更加埋头学习知识. 每天你得有个list,可以是上一日遗留下来的部分未完成项,可以是idea收集箱中拿到的新任务,总 ...

  3. SmartUI2.0后续声明

    感谢很多朋友关注,因为今年一直在另外一个公司做顾问,网络环境管制相当严格,所以一直没有更新博客. 同时也很抱歉,SmartUI 2.0一直都没有下文.在次声明一下,SmartUI一直都在做,只不过Sm ...

  4. Chem 3D软件可以改变背景吗

    化学绘图过程中常常需要绘制三维结构的图形,Chem 3D软件是ChemOffice套件中专门用于绘制三维结构的组件.用过它的用户会发现,其背景颜色通常都默认为深蓝色,但是不是每个场景都适合用深蓝色的背 ...

  5. session和cookie的联系与区别

    区别: 1.cookie是存放在浏览器上的,session是存放在服务器上的: 2.cookie不安全,别人可以通过分析本地的cookie并进行cookie欺骗,session比cookie安全: 3 ...

  6. 标签球-Js插件

    今天上学校的图书馆,看到了一个好玩的东西,特意百度了下,发现叫做“标签球”,效果图为: 直接代码如下: #div1 {position:relative; width:350px; height:35 ...

  7. AndroidManifest.xml文件详解(activity)(四)

    android:multiprocess 这个属性用于设置Activity的实例能否被加载到与启动它的那个组件所在的进程中,如果设置为true,则可以,否则不可以.默认值是false. 通常,一个新的 ...

  8. duboo服务调用不到的原因(dubbo启动消费者报错:No provider available for the service)

    com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method queryTemplate in the service com.x.a ...

  9. PAT 1018 Public Bike Management(Dijkstra 最短路)

    1018. Public Bike Management (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  10. python中matplotlib绘图封装类之折线图、条状图、圆饼图

    DrawHelper.py封装类源码: import matplotlib import matplotlib.pyplot as plt import numpy as np class DrawH ...