博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 1424 - Salesmen (dp)
阅读量:4072 次
发布时间:2019-05-25

本文共 762 字,大约阅读时间需要 2 分钟。

题意:

给一个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
#include
#include
#include
#include
#include
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
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

转载地址:http://xvzni.baihongyu.com/

你可能感兴趣的文章
更新Svn客户端后,右键菜单中没有TortoiseSVN了
查看>>
Flash剪贴板功能
查看>>
FlashInspector 【Firefox浏览器插件,flash分析工具】
查看>>
xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题
查看>>
十个Flex/Air疑难杂症及解决方案简略
查看>>
Vector3D - AS3
查看>>
球面的纹理映射
查看>>
Flash Builder 找不到所需的 Adobe Flash Player
查看>>
Android开发配置,消除SDK更新时的“https://dl-ssl.google.com refused”异常
查看>>
android调试模拟器启动太慢,怎样才能更快的调试程序呢?
查看>>
AVD横屏,按Ctrl+F11
查看>>
android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
查看>>
dalvik
查看>>
什么是Activity
查看>>
bundle是什么?
查看>>
java 为啥变量名前要加个m?
查看>>
[AS3] 问个很囧的问题: 如何遍历Dictionary?
查看>>
Unity3D面试题汇总
查看>>
AS3声音录音
查看>>
[本人开发的游戏] Discuz网页动物园插件1.0Beta发布!让积分流动起来!
查看>>