题目:点击打开链接

题意:

给一个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)相关推荐

  1. uva 1424 - Salesmen(dp)

    题目链接:uva 1424 - Salesmen 题目大意:给定一个包含n个点的无向图和一个长度为L的序列A,要求修改尽量少得数,使得序列中的任意两个相邻数相等或者在途中相邻. 解题思路:dp[i][ ...

  2. Placing Lampposts ,UVa 10859 树形dp

    UVa 10859 日常刷白书,第三次刷dp刷到这题,竟然还是不会写..... 这个题给定n个点m条边的无向无环图,有至多1000个节点,每个节点有两个状态,可以放灯或者不放灯,要求放最少的灯使得所有 ...

  3. uva 10118(DP)

    UVA 10118 题意: 有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果, 如果篮子里有两个相同的糖果,那么就可以把这两个(一对)糖果放进自己 ...

  4. uva 672 - Gangsters(dp)

    题目链接:uva 672 - Gangsters 题目大意:给出n,K,T,表示一个酒店将要有n位客人到来,然后给出每个客人的ti,表示在ti时刻第i位客人来到酒店,ti ≤ T:再给出pi,表示第i ...

  5. 【UVa】【DP】1633 Dyslexic Gollum

    UVa 1633 Dyslexic Gollum 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 输入正整数N,KN,KN,K,求长度 ...

  6. UVA 10564 计数DP

    也是经典的计数DP题,想练练手,故意不写记忆化搜索,改成递推,还是成功了嘞...不过很遗憾一开始WA了,原来是因为判断结束条件写个 n或s为0,应该要一起为0的,搞的我以为自己递推写挫了,又改了一下, ...

  7. Uva 11600 期望DP

    题意:n个城市,相互可达(有n(n-1)/2条边),其中有一些道路上面有妖怪,现在,从1号城市出发,随机挑取一个城市走去,这个道路上的妖怪就会被消灭,求: 在平均情况下,需要走多少步,使得任意两个城市 ...

  8. 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/ ...

  9. uva 10306 简单DP

    题意: 给n种硬币和一个面值s. 每种硬币有两种价值,并且有无限个,求能满足第一种价值i * i + j * j = s * s的最少硬币数. 解析: 先dp出每种情况下i,j用的最少银币,然后暴力搞 ...

最新文章

  1. 搭建turnserver
  2. fastText实现文本分类
  3. 数据结构与算法学习-开篇
  4. 解决前后端base64编码传递时的中文乱码问题
  5. 函数式编程Map()Reduce()
  6. Codrops 教程:基于 CSS3 的精美模态窗口效果
  7. threejs设置对象层次
  8. nonlocal和global关键字
  9. 【JavaScript学习】JavaScript对象创建
  10. 【医院综合管理专题】医院服务质量管理制度与规范
  11. linkin大话设计模式--抽象工厂
  12. MATLAB数字图像处理(一)图像的基本操作
  13. 通用高效分页存储过程
  14. flash AS3.0实现进度条与播放暂停按钮的同步
  15. 添加打印机无法搜索计算机,添加打印机时搜索不到如何解决 电脑搜不到打印机设备的处理办法...
  16. 机器学习读书笔记之决策树
  17. python里面的pip是什么意思_“pip install”和“python -m pip install”有什么区别?
  18. 降本增效这九个月,爱奇艺从“穿越火线”,到“冷静增长”
  19. 无接触招聘,AI催生HCM SaaS新动向
  20. 嘻哈说:设计模式之单一职责原则

热门文章

  1. 前端JavaScript——打砖块小游戏
  2. Tair LDB基于Prefixkey的范围查找性能优化项目测试及完成总结报告
  3. Oracle逻辑读详解
  4. STM32CubeMX——点灯
  5. STM32CubeMX——定时器配置
  6. 数据分析-指标(PV)
  7. 快速入门 Android Jetpack 以及相关 Kotlin、RxJava、MVVM 等主流技术,独立构架 App 的基础技能
  8. c语言从入门到精通 当当,51单片机C语言编程从入门到精通
  9. 通俗易懂理解死锁以及如何避免死锁
  10. 现代化医院设计如何满足以人为本和不同人群不同层次的要求