题目

传送门:QWQ

分析

在dp分类里做的,然而并不会$ O(n^3) $ 的$ dp $,怒写一发搜索。

看起来是$ O(n^4) $,但仔细分析了一下好像还挺靠谱的?

poj挂了,没在poj交,在zoj上交的500ms

P.S. 如果要在poj交还要把多数据改成单数据

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=;
int A[maxn][maxn], num[maxn*maxn], id[], cnt, ok[maxn][maxn], n;
int now[maxn][maxn], ans[maxn][maxn], can[maxn][maxn], vis[maxn][maxn];
int dx[]={,,,-}, dy[]={,-,,}; struct Node{ int x,y,dis,numm; }; bool in(int x,int y){ return x>=&&x<=n&&y>=&&y<=n; } queue<Node> que;
void bfs(int x,int y,int dis,int numm){
que.push((Node){x,y,dis,numm});
while(!que.empty()){
Node a=que.front(); que.pop();
x=a.x; y=a.y; dis=a.dis++; numm=a.numm;
for(int i=;i<;i++){
int px=x+dx[i], py=y+dy[i];
if(!in(px,py) || vis[px][py] || ok[px][py]) continue;
vis[px][py]=; a.x=px; a.y=py;
if(dis< now[px][py]){ans[px][py]=numm;can[px][py]=;now[px][py]=dis;}
if(dis==now[px][py]){can[px][py]++;}
que.push(a);
}
} }
int main(){
int t; scanf("%d",&t);
while(t--){
cnt=; memset(id,,sizeof(id)); memset(num,,sizeof(num)); memset(ok,,sizeof(ok));
memset(ans,,sizeof(ans)); memset(can,,sizeof(can));
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
scanf("%d",&A[i][j]);
if(A[i][j]) id[A[i][j]]=++cnt, num[cnt]=A[i][j], ok[i][j]=;
}
memset(now,,sizeof(now));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
if(!ok[i][j]) continue;
vis[i][j]=; bfs(i,j,,id[A[i][j]]);
memset(vis,,sizeof(vis));
}
for(int i=;i<=n;i++){
for(int j=;j<n;j++){
if(!ok[i][j] && can[i][j]==) printf("%d ",num[ans[i][j]]);
else printf("%d ",A[i][j]);
}
if(!ok[i][n] && can[i][n]==) printf("%d\n",num[ans[i][n]]);
else printf("%d\n",A[i][n]);
} if(t!=) puts("");
}
return ;
}

最新文章

  1. Inventor 2014 sp1/sp2激活
  2. 温习SQL server
  3. 思科模拟器软件教程---教你如何划分Vlan
  4. 电脑安装win8.1后 前面板没有声音的解决办法
  5. vs2005 测试 lua环境
  6. 解决SMARTFORMS 中table 控件单行跨页的问题
  7. 用stm32f0x建立新的工程重要步骤
  8. 关于redis的使用
  9. JavaScript和JQuery的区别
  10. Newtonsoft.Json 概述
  11. day 47 htm-part2
  12. postgre 导出单表和导入
  13. P3203 [HNOI2010]弹飞绵羊(LCT)
  14. 【366】通过 python 求解 QP 问题
  15. Android RelativeLayout wrap_content 而且 child view 使用 layout_alignParentBottom 时 RelativeLayout 高度会占满屏幕
  16. 如何使用SVN
  17. vue-cli中的webpack配置
  18. vue 组件 模板input双向数据数据
  19. Linux基础回想(1)——Linux系统概述
  20. Http:设置 浏览器中MIME 类型

热门文章

  1. vue.js 源代码学习笔记 ----- instance index
  2. webpack 事件触发 按需加载
  3. [置顶] 曙光到来,我的新书《Android进阶之光》已出版
  4. OPEN(SAP) UI5 学习入门系列之三:MVC (下) - 视图与控制器
  5. 安卓开发 报错 错误:This version of android studio is incompatible with the gradle version used. 的解决
  6. MySQL开放外部链接
  7. [转](阿里笔试)使用多线程和sleep函数生成字符串的伪随机排列
  8. 体验 k8s 的核心功能
  9. rem自适应原理
  10. java-文件流正确关闭资源