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能力不足啊,很多细节还是要多想想

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

[POJ 2329] Nearest number-2的更多相关文章

  1. [NewTrain 10][poj 2329]Nearest Number - 2

    题面: http://poj.org/problem?id=2329 题解: 这题有很多做法 1. 搜索 复杂度$O(n^4)$ 但是实际上远远达不到这个复杂度 所以可以通过 2. 对于每一个格子,我 ...

  2. 【POJ】2329 Nearest number - 2(搜索)

    题目 传送门:QWQ 分析 在dp分类里做的,然而并不会$ O(n^3) $ 的$ dp $,怒写一发搜索. 看起来是$ O(n^4) $,但仔细分析了一下好像还挺靠谱的? poj挂了,没在poj交, ...

  3. POJ - 1330 Nearest Common Ancestors(基础LCA)

    POJ - 1330 Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %l ...

  4. POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA)

    POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA) Description A ...

  5. LCA POJ 1330 Nearest Common Ancestors

    POJ 1330 Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24209 ...

  6. POJ 1330 Nearest Common Ancestors(lca)

    POJ 1330 Nearest Common Ancestors A rooted tree is a well-known data structure in computer science a ...

  7. POJ 2329 (暴力+搜索bfs)

    Nearest number - 2 Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3943 Accepted: 1210 De ...

  8. POJ-2329 Nearest number - 2(BFS)

    Nearest number - 2 Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4100 Accepted: 1275 De ...

  9. POJ.1330 Nearest Common Ancestors (LCA 倍增)

    POJ.1330 Nearest Common Ancestors (LCA 倍增) 题意分析 给出一棵树,树上有n个点(n-1)条边,n-1个父子的边的关系a-b.接下来给出xy,求出xy的lca节 ...

随机推荐

  1. Python写的计算器程序(主要目的在于熟悉下正则表达式)

    import res = '1-2*((60-30-(-40/5)*(9-2*5/3-7/3*99/4*2998-10*568/14.3))+(-4*3)/16-3)'s2 = 1-2*((60-30 ...

  2. Canvas 图片平铺设置

    /** * 图片平铺 */ function initDemo7(){ var canvas = document.getElementById("demo7"); if (!ca ...

  3. ESLint 代码检查规范

    目录 Airbnb Javascript Style Guide 引用 对象 数组 函数 箭头函数 类和构造器 模块 Iterators and Generators 变量 比较运算符 注释 空格 A ...

  4. 软工实践 - 第十七次作业 Alpha 冲刺 (8/10)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/articles/10023469.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长 ...

  5. Visual Studio 2017 添加引用报错(未能正确加载ReferenceManagerPackage包)

    最近安装了VS2017,在开发时需要添加引用,于是像原来使用vs2012那样直接右键,添加引用,结果弹出一个错误提示“未能完成操作.不支持此接口”.真真是见了鬼了...... google.度娘一顿搜 ...

  6. 【bzoj4146】[AMPPZ2014]Divisors 数论

    原文地址:http://www.cnblogs.com/GXZlegend/p/6801411.html 题目描述 给定一个序列a[1],a[2],...,a[n].求满足i!=j且a[i]|a[j] ...

  7. NBUT校赛 J Alex’s Foolish Function(分块+延迟标记)

    Problem J: Alex’s Foolish Function Time Limit: 8 Sec  Memory Limit: 128 MB Submit: 18  Solved: 2 Des ...

  8. 洛谷 P3396 哈希冲突 解题报告

    P3396 哈希冲突 题目背景 此题约为NOIP提高组Day2T2难度. 题目描述 众所周知,模数的hash会产生冲突.例如,如果模的数p=7,那么4和11便冲突了. B君对hash冲突很感兴趣.他会 ...

  9. getprop 获取android系统属性

    Android属性系统 property_get/property_set  (很透彻)http://www.blogjava.net/MEYE/articles/359773.html getpro ...

  10. 牛客小白月赛4——I—合唱队形

    链接:https://www.nowcoder.com/acm/contest/134/I来源:牛客网 题目描述 铁子的班级在毕业晚会有一个合唱节目,到了毕业晚会的时候,他们必须排成一排一起合唱&qu ...