Link:

POJ 2329 传送门

Solution:

比较明显的$dp$,但爆搜好像也能过

用多个方向$dp$来解决此题,最后汇总答案即可

一开始我写了4个,但后来发现只要相反的2个方向即可,同时不用分别记录答案,直接不断更新答案即可

要特别注意对特例的判断:

不能只判断其最近距离相同且最近点相同

仅当$(a1,b1)$和$(a2,b2)$当前都仅有一个最近点且其相同时才不增加权值

否则可能$(a2,b2)$有多个最近点但正好记录了与$(a1,b1)$最近点相同的点

Code:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib> using namespace std; const int MAXN=+,INF=<<;
struct number{int cnt,d,x,y;}dp[MAXN][MAXN];
int n,dat[MAXN][MAXN]; void check(int a,int b,int l,int r)
{
if(dp[a][b].d+<dp[l][r].d)
dp[l][r]=dp[a][b],dp[l][r].d++;
else if(dp[a][b].d+==dp[l][r].d) //注意这里的判断细节
{
if(dp[l][r].cnt== && dp[a][b].cnt== && dp[l][r].x==dp[a][b].x && dp[l][r].y==dp[a][b].y) return;
dp[l][r].cnt+=dp[a][b].cnt; //cnt都为1时才返回
}
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) for(int j=;j<=n;j++)
scanf("%d",&dat[i][j]),dp[i][j].d=INF;
for(int i=;i<=n;i++) for(int j=;j<=n;j++)
{
if(dat[i][j]) dp[i][j].d=,dp[i][j].x=i,dp[i][j].y=j,dp[i][j].cnt=;
check(i,j,i+,j);check(i,j,i,j+);
}
for(int i=n;i>=;i--) for(int j=n;j>=;j--)
{
if(dat[i][j]) dp[i][j].d=,dp[i][j].x=i,dp[i][j].y=j,dp[i][j].cnt=;
check(i,j,i-,j);check(i,j,i,j-);
} for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(dat[i][j]){printf("%d ",dat[i][j]);continue;}
if(dp[i][j].cnt==) printf("%d ",dat[dp[i][j].x][dp[i][j].y]);
else printf("0 ");
}
puts("");
}
return ;
}

Review:

Hack能力不足啊,很多细节还是要多想想

如果多次判断内容相同,就放到函数里去吧

最新文章

  1. Tensorflow serving的编译
  2. web.xml总结整理
  3. pgsql 9.4修改数据库只读
  4. javascript数字转汉字中文数字
  5. Picker组件封装
  6. eclipse 修改编码
  7. cocos2d-x 3.0 新特性样例
  8. js遍历对象的属性并且动态添加属性
  9. WCF技术剖析之十三:序列化过程中的已知类型(Known Type)
  10. 总结:PyQt5自定义信号源
  11. __call PHP伪重载方法
  12. (转)SQL中的循环、for循环、游标
  13. linux su失败:无法设置用户ID:资源暂时不可用
  14. 学习python的几种模块
  15. &lt;iframe&gt; 标签 中 src 的三种形式. display , echart
  16. 探索未知种族之osg类生物---渲染遍历之Renderer::draw()简介
  17. Multi-pattern string match using Aho-Corasick
  18. 用maven创建一个web项目
  19. TCP/IP协议--TCP的交互数据流和成块数据流
  20. Junit的异常测试

热门文章

  1. cloud-init简介及组件说明
  2. Java 冒泡排序与快速排序的实现
  3. 用树莓派做3G无线路由器
  4. Redis Sorted Set
  5. 简单的FreeBSD 的内核编译
  6. [洛谷P4725]【模板】多项式对数函数
  7. 解决:dubbo找不到dubbo.xsd报错
  8. Codeforces Round #516 (Div. 2)D. Labyrinth
  9. Ajax基础知识 浅析(含php基础语法知识)
  10. Quartus2 通过Nativelink调用modelsim进行功能仿真(转载)