路径方案数_mod_SPFA_记忆化搜索_C++
本文含有原创题,涉及版权利益问题,严禁转载,违者追究法律责任
本来是写个 DP 分分钟就 A 了,结果老师要我们写记忆化搜索(无奈脸)
算啦,随手一改又是一个标准的记忆化搜索(目测好像是记忆化搜索容易码一些,而且跑得快一些)
话说不取模也可以A,数据太水
很水的题吧,先 SPFA 跑一遍 2 的最短路,然后记忆化搜索统计方案
不难证明在加上最短路的限制条件后,图变成了一个 DAG
证明:首先有向是显然的,不可能存在两点 x,y,它们的最短路 d[x]>d[y] 又 d[x]<d[y]
若存在一个环 a→b→c→a ......
则 d[a]>d[b],d[b]>d[c],d[c]>d[a],这个式子显然是不成立的
证毕
代码很容易打,加了读入优化
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<cmath>
- #include<iostream>
- #include<algorithm>
- #include<queue>
- using namespace std;
- const int N=,M=,mo=,oo=;
- int v[M*],w[M*],next[M*],first[N],d[N],f[N];
- bool g[N];
- queue<int> q;
- inline int read()
- {
- int re=;
- char ch=getchar();
- while (ch<''||ch>'') ch=getchar();
- while (ch>=''&&ch<='')
- {
- re=re*+ch-'';
- ch=getchar();
- }
- return re;
- }
- inline int dfs(int x,int fa)
- {
- if (g[x]) return f[x];
- g[x]=;
- int k;
- for (int i=first[x];i;i=next[i])
- {
- k=v[i];
- if (k==fa||d[k]<=d[x]) continue;
- if ((f[x]+=dfs(k,x))>=mo) f[x]-=mo;
- }
- return f[x];
- }
- int main()
- {
- freopen("mod.in","r",stdin);
- freopen("mod.out","w",stdout);
- int n,m,i,k,x,j;
- n=read();
- m=read();
- for (i=;i<=m;i++)
- {
- v[i+m]=x=read();
- v[i]=read();
- w[i+m]=w[i]=read();
- next[i]=first[x];
- first[x]=i;
- next[i+m]=first[v[i]];
- first[v[i]]=i+m;
- }
- for (i=;i<=n;i++) d[i]=oo;
- q.push();
- d[]=;
- while (!q.empty())
- {
- x=q.front();
- q.pop();
- f[x]=;
- for (i=first[x];i;i=next[i])
- {
- k=v[i];
- if (d[k]>d[x]+w[i])
- {
- d[k]=d[x]+w[i];
- if (!f[k])
- {
- f[k]=;
- q.push(k);
- }
- }
- }
- }
- f[]=;
- printf("%d\n",dfs(,));
- return ;
- }
本题是原创题,可购买数据(10个测试点),RMB 1.5
如需购买者,联系方式戳这里 http://www.cnblogs.com/hadilo/p/5932395.html
路径方案数_mod_SPFA_记忆化搜索_C++的更多相关文章
- BZOJ1079 [SCOI2008]着色方案 【dp记忆化搜索】
题目 有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块. 所有油漆刚好足够涂满所有木块,即c1+c2+-+ck=n.相邻两个木块涂相同色显得很难看 ...
- [SCOI2008]着色方案 递推 记忆化搜索
我们发现 $c_{i}$ 和 $k$ 的规模非常小我们还发现每种颜色的位置是不必知道的,只要这种颜色和相邻的颜色种类不同即可.定义状态 $f[a][b][c][d][e][last]$,代表有 $a$ ...
- BZOJ 1079: [SCOI2008]着色方案 记忆化搜索
1079: [SCOI2008]着色方案 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 记忆化搜索dfs
题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...
- HDU 1176 免费馅饼(记忆化搜索)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- uoj167 元旦老人与汉诺塔(记忆化搜索)
QwQ太懒了,题目直接复制uoj的了 QwQ这个题可以说是十分玄学的一道题了 首先可以暴搜,就是\(dfs\)然后模拟每个过程是哪个柱子向哪个柱子移动 不多解释了,不过实现起来还是有一点点难度的 直接 ...
- HDU 1208 Pascal's Travels 经典 跳格子的方案数 (dp或者记忆化搜索)
Pascal's Travels Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Su ...
- 【洛谷】3953:逛公园【反向最短路】【记忆化搜索(DP)统计方案】
P3953 逛公园 题目描述 策策同学特别喜欢逛公园.公园可以看成一张N个点M条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条 ...
- csu 最优对称路径(bfs+记忆化搜索)
1106: 最优对称路径 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 371 Solved: 77[Submit][Status][Web Boar ...
随机推荐
- TFS权限配置
装了TFS,要给TFS里添加用户,然后分配权限.其实一般项目中权限都不会控制的那么细,所以就直接想给项目组的每个人建一个用户,让他们都能访问这个项目的代码并进行任何操作.只想怎么简单怎 ...
- 发布npm包 登录报错 E409 Conflict
1.到官网注册个账号,并且验证完邮箱:https://www.npmjs.com/ 2.打开cmd命令行 登录:$npm login 根据提示 一步步完成登录. 3.新建一个项目文件夹: npmtes ...
- Vue学习(二):class与style绑定
<!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml&q ...
- jmeter无法启动的解决办法
jmeter下载地址: 链接: https://pan.baidu.com/s/15YhiPH-kNVxISEZ4Mxf_WA 提取码: 25sv jdk 8.0 下载地址: 链接: http ...
- 常用模块(数据序列化 json、pickle、shelve)
本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Py ...
- pip消失后复原
pip是python中比较常用的管理依赖包的工具.今天心血来潮更新一下pip版本,结果悲剧发生了. -bash: /Library/Frameworks/Python.framework/Versio ...
- 启动 SQL Server 管理 Studio 在 SQL Server 2008R2 中的错误消息:"无法读取此系统上以前注册的服务器的列表" 解决方法
问题: 服务器被人直接停掉,重启后,发现sqlserver2008r2 启动管理器报错: "无法读取此系统上以前注册的服务器的列表" 如图: 点击继续,进入后: 解决方法: 点击上 ...
- 超像素 superpixels 是什么东西
毕业设计要做图像分割 识别什么的. 看论文看到 superpixels 开始脑补是 像素插值算出来的 后来越看越不想,搜索发现根本是另外一回事 http://blog.sina.com.cn/s/b ...
- 剑指offer:斐波那契数列
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n< ...
- 查看ClassLoader载入了哪些类?
在执行jar时加上-verbose:class java -verbose:class -Xms1G -Xmx2G -jar xx.jar 必要时还可以使用 >log.txt 将输出输入到文本 ...