UVA 1424 - Salesmen (dp)
题目:点击打开链接
题意:
给一个n个点m条边的有向无环图,再给一个长度L的序列A,然后求图中的一条长度为L的路径B(这条路径的同一个点可以连续重复出现多次)
问路径B和序列A不相等的数最少多少, 即Ai != Bi, 0<=i<L的数。
思路:
刚看这题,就觉得像树形dp,最终做出来不像树形dp。。
f[i][j]表示i点,在路径序列的前j点中的最小距离。
那么
j=0, f[u][0] = d(u, arr[0]);
j>0, f[u][j] = min(f[u][j], f[v][j-1]+d(u, arr[j])), v是与u相邻的点
f[u][j] = min(f[u][j], f[u][i-1]+d(u,arr[i])); //取重复当前点的情况
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;typedef long long int64;
const int INF = 0x3f3f3f3f;
const int MAXN = 210;int n, m, len,ans,arr[MAXN];
bool vis[MAXN];
int f[MAXN][MAXN];
vector<int>adj[MAXN];inline int d(int a, int b){if(a==b) return 0;else return 1;
}int main(){int T;scanf("%d", &T);while(T--){scanf("%d%d", &n, &m);for(int i=0; i<n; ++i) adj[i].clear();for(int i=0; i<m; ++i){int u, v;scanf("%d%d", &u, &v);--u; --v;adj[u].push_back(v);adj[v].push_back(u);}scanf("%d", &len);for(int i=0; i<len; ++i){scanf("%d", &arr[i]);--arr[i];}memset(f, 0x3f, sizeof(f));for(int i=0; i<len; ++i){for(int u=0; u<n; ++u){for(int j=0; j<adj[u].size(); ++j){int v = adj[u][j];if(i==0) f[u][i] = d(u, arr[i]);else {f[u][i] = min(f[u][i], f[u][i-1]+d(u,arr[i]));f[u][i] = min(f[u][i], f[v][i-1]+d(u,arr[i]));}} }}ans = INF;for(int i=0; i<n; ++i)ans = min(ans, f[i][len-1]);printf("%d\n", ans);}return 0;
}
UVA 1424 - Salesmen (dp)相关推荐
- uva 1424 - Salesmen(dp)
题目链接:uva 1424 - Salesmen 题目大意:给定一个包含n个点的无向图和一个长度为L的序列A,要求修改尽量少得数,使得序列中的任意两个相邻数相等或者在途中相邻. 解题思路:dp[i][ ...
- Placing Lampposts ,UVa 10859 树形dp
UVa 10859 日常刷白书,第三次刷dp刷到这题,竟然还是不会写..... 这个题给定n个点m条边的无向无环图,有至多1000个节点,每个节点有两个状态,可以放灯或者不放灯,要求放最少的灯使得所有 ...
- uva 10118(DP)
UVA 10118 题意: 有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果, 如果篮子里有两个相同的糖果,那么就可以把这两个(一对)糖果放进自己 ...
- uva 672 - Gangsters(dp)
题目链接:uva 672 - Gangsters 题目大意:给出n,K,T,表示一个酒店将要有n位客人到来,然后给出每个客人的ti,表示在ti时刻第i位客人来到酒店,ti ≤ T:再给出pi,表示第i ...
- 【UVa】【DP】1633 Dyslexic Gollum
UVa 1633 Dyslexic Gollum 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 输入正整数N,KN,KN,K,求长度 ...
- UVA 10564 计数DP
也是经典的计数DP题,想练练手,故意不写记忆化搜索,改成递推,还是成功了嘞...不过很遗憾一开始WA了,原来是因为判断结束条件写个 n或s为0,应该要一起为0的,搞的我以为自己递推写挫了,又改了一下, ...
- Uva 11600 期望DP
题意:n个城市,相互可达(有n(n-1)/2条边),其中有一些道路上面有妖怪,现在,从1号城市出发,随机挑取一个城市走去,这个道路上的妖怪就会被消灭,求: 在平均情况下,需要走多少步,使得任意两个城市 ...
- UVa 11762 (期望 DP) Race to 1
设f(x)表示x转移到1需要的次数的期望,p(x)为不超过x的素数的个数,其中能整除x的有g(x)个 则有(1-g(x)/p(x))的概率下一步还是转移到x,剩下的情况各有1/p(x)的概率转移到x/ ...
- uva 10306 简单DP
题意: 给n种硬币和一个面值s. 每种硬币有两种价值,并且有无限个,求能满足第一种价值i * i + j * j = s * s的最少硬币数. 解析: 先dp出每种情况下i,j用的最少银币,然后暴力搞 ...
最新文章
- 搭建turnserver
- fastText实现文本分类
- 数据结构与算法学习-开篇
- 解决前后端base64编码传递时的中文乱码问题
- 函数式编程Map()Reduce()
- Codrops 教程:基于 CSS3 的精美模态窗口效果
- threejs设置对象层次
- nonlocal和global关键字
- 【JavaScript学习】JavaScript对象创建
- 【医院综合管理专题】医院服务质量管理制度与规范
- linkin大话设计模式--抽象工厂
- MATLAB数字图像处理(一)图像的基本操作
- 通用高效分页存储过程
- flash AS3.0实现进度条与播放暂停按钮的同步
- 添加打印机无法搜索计算机,添加打印机时搜索不到如何解决 电脑搜不到打印机设备的处理办法...
- 机器学习读书笔记之决策树
- python里面的pip是什么意思_“pip install”和“python -m pip install”有什么区别?
- 降本增效这九个月,爱奇艺从“穿越火线”,到“冷静增长”
- 无接触招聘,AI催生HCM SaaS新动向
- 嘻哈说:设计模式之单一职责原则