题意:
题意坑爹,很容易误认成是做短路的条数,题意是给你一个图,让你从起点走到终点,问你有多少种走法,但有一个限制,假如你想从a走到b,必须满足终点到b的最短距离小于终点到a的最短距离.
思路:
先以终点为起点跑一便单元源最短路,然后记忆化搜索路径条数就行了...

#include<stdio.h>
#include<string.h>
#include<queue>#define N_node 2500 + 500
#define N_edge 10000 + 1000
#define inf 9223372036854775807

using namespace std;typedef struct
{int to ,next;__int64 cost;
}STAR;STAR E[N_edge];
int list[N_node] ,tot;
__int64 s_x[N_node];void add(int a ,int b ,__int64 c)
{E[++tot].to = b;E[tot].cost = c;E[tot].next = list[a];list[a] = tot;
}void spfa(int s ,int n)
{int mark[N_node] = {0};mark[s] = 1;for(int i = 0 ;i <= n ;i ++)s_x[i] = inf;s_x[s] = 0;queue<int>q;q.push(s);while(!q.empty()){int tou ,xin;tou = q.front();q.pop();mark[tou] = 0;for(int k = list[tou] ;k ;k = E[k].next){xin = E[k].to;if(s_x[xin] > s_x[tou] + E[k].cost){s_x[xin] = s_x[tou] + E[k].cost;if(!mark[xin]){mark[xin] = 1;q.push(xin);}}}}
}__int64 maxx[N_node];
int mark[N_node];
__int64 map[N_node][N_node];
__int64 dfs(int s ,int t)
{if(maxx[s] != 0) return maxx[s];__int64 sum = 0;for(int k = list[s] ;k ;k = E[k].next){int to = E[k].to;if(mark[to] || s_x[to] >= s_x[s]) continue;mark[to] = 1;sum += dfs(to ,t);mark[to] = 0;}maxx[s] = sum;return sum;
}int main ()
{int n ,i ,j;while(~scanf("%d" ,&n)){for(i = 1 ;i <= n ;i ++)for(j = 1 ;j <= n ;j ++)scanf("%I64d" ,&map[i][j]);memset(list ,0 ,sizeof(list));tot = 1;for(i = 1 ;i <= n ;i ++)for(j = 1 ;j <= n ;j ++){int now = (i - 1) * n + j;if(j < n) add(now ,now + 1 ,map[i][j+1]);if(j > 1) add(now ,now - 1 ,map[i][j-1]);if(i < n) add(now ,now + n ,map[i+1][j]);if(i > 1) add(now ,now - n ,map[i-1][j]);}add(0 ,1 ,map[1][1]);add(1 ,0 ,map[1][1]);spfa(n * n ,n * n);memset(maxx ,0 ,sizeof(maxx));memset(mark ,0 ,sizeof(mark));mark[0] = 1;maxx[n*n] = 1;printf("%I64d\n" ,dfs(0 ,n * n));}return 0;
}

hdu1428 spfa+记忆化搜索相关推荐

  1. hdu1428(spfa与记忆化搜索)

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】

    题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...

  3. hdu1428(记忆化搜索)

    题意:"他考虑从A区域到B区域仅当存在一条从B到机房的路线比任何一条从A到机房的路线更近(否则可能永远都到不了机房了-"这句话一定要理解清楚.就是说,对于当前位置,如果下一个状态与 ...

  4. BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp

    题目描述 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...

  5. 【NOIP2017】逛公园 拆点最短路+拓扑(记忆化搜索

    题目描述 策策同学特别喜欢逛公园.公园可以看成一张N个点M条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间. 策 ...

  6. csu 最优对称路径(bfs+记忆化搜索)

    1106: 最优对称路径 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 371  Solved: 77 [Submit][Status][Web Bo ...

  7. NOIP 2017 逛公园 记忆化搜索 最短路 好题

    题目描述: 策策同学特别喜欢逛公园.公园可以看成一张N个点MM条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间. ...

  8. LOJ #2316「NOIP2017」逛公园【最短路】【记忆化搜索】

    dis[i]dis[i]dis[i]表示111号点到iii号点的最短距离,用spfaspfaspfa跑一遍即可. 考虑如何设定状态. 注意到题意要的是小于等于dis[n]+Kdis[n]+Kdis[n ...

  9. 洛谷P1057 传球游戏(记忆化搜索)

    点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...

最新文章

  1. 体验首款Linux消费级平板,原来芯片和系统全是国产
  2. 做好信息安全 必须打造良好的企业安全文化
  3. 使用SSH密钥对给你的阿里云ECS加把安全锁
  4. 20线程测试cpu性能软件,评测平台介绍、CPU多线程性能测试
  5. (原創) 如何使用C++/CLI读/写jpg檔? (.NET) (C++/CLI) (GDI+) (C/C++) (Image Processing)
  6. 极道创始人吴江:企业级数据系统,初创一样可以做出好产品
  7. layui框架的优缺点
  8. D2Admin - 基于vue的清新后台模板
  9. NumPy库---一元函数
  10. macOs 10.12.2总于修复鼠标驱动了
  11. 第一次破解unity3d安卓游戏笔记+IL指令集合
  12. oracle数据库查询904错误,EXP-00008:遇到ORACLE错误904问题详解
  13. 开发QQ桌球瞄准器(4):透明度、颜色、线宽与母球大小
  14. Si5395/94/92时钟芯片配置步骤
  15. python 画风场_Python人工智能的味道 - 图像风格迁移
  16. 网上二手服务器能做家用电脑吗?
  17. 红楼梦人物分析系统c语言,Gephi分析红楼梦
  18. Windows10 安装Oracle 11g 的配置详解(1)
  19. windows11虚拟机安装出现蓝屏
  20. CocosCreator之KUOKUO带你做音乐可视化

热门文章

  1. [UWP]用Shape做动画(2):使用与扩展PointAnimation
  2. 快速优雅的为React组件生成文档
  3. 问题 A: 喷水装置(一)
  4. PLSQL_数据泵Datapump导入导出数据IMPDP / EXPDP(概念)(Oracle数据导入导出工具)(转)...
  5. linux PAM模块
  6. ip对应的区域查询(php版)(转)
  7. 不要让中国孩子买的玩具都变成外国货!
  8. legend3---4、lavarel中session使用注意
  9. ubuntu16.04上安装gstreamer
  10. HDU 3926 图的同构