UVALive 4256 Salesmen 【简单dp】
来源:互联网 发布:云计算龙头企业 编辑:程序博客网 时间:2024/04/30 22:03
题意:给你一棵树,和一串序列,求最少改变多少个数使得序列中的每个相邻的数要么相等要么在树上相邻。
分析:设状态dp[i][j]表示长度为i以j结尾最少修改几次合法。
转移dp[i][k]=min(dp[i][k],dp[i-1][j]+(a[i]!=k)) k是当前最后数字,j是k前一个,j可以等于k(处理与前面相等),若j与k在树上相邻,判断a[i]!=k,dp[i][k]+1;
代码:
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<vector>#include<queue>#include<cmath>#include<stack>#include<set>#include<map>#define INF 0x3f3f3f3f#define Mn 105#define Mm 200#define mod 1000000007#define CLR(a,b) memset((a),(b),sizeof((a)))#define CPY(a,b) memcpy ((a), (b), sizeof((a)))#pragma comment(linker, "/STACK:102400000,102400000")#define ul u<<1#define ur (u<<1)|1using namespace std;typedef long long ll;int a[Mm];int dp[Mm][Mn];int g[Mn][Mn];int main() { int n,m,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); CLR(g,0); while(m--) { int u,v; scanf("%d%d",&u,&v); g[u][v]=g[v][u]=1; } scanf("%d",&m); for(int i=1;i<=m;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) g[i][i]=1; for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) dp[i][j]=INF; for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) if(g[j][k]) dp[i][k]=min(dp[i][k],dp[i-1][j]+(a[i]!=k)); } int ans=m; for(int i=1;i<=n;i++) ans=min(dp[m][i],ans); printf("%d\n",ans); } return 0;}
0 0
- UVALive 4256 Salesmen 【简单dp】
- UVALive - 4256 Salesmen DP+暴力
- UVaLive LA 4256 | UVa 1424 - Salesmen(简单DP)
- UVALive 4256 Salesmen
- UVALive 4256 Salesmen
- UVALive - 4256 Salesmen
- UVALive - 4256 || LA 4256 Salesmen 商人(DP)
- UVALive 4256 Salesmen (树DP,4级)
- UVa 4256 - Salesmen dp
- LA 4256 Salesmen 线性dp
- UVA 1424 - Salesmen (dp)
- uva 1424 - Salesmen(dp)
- UVA 1424 Salesmen | dp
- Salesmen - UVa 1424 dp
- UVA 1424 - Salesmen(DP)
- UVA 1424 Salesmen(dp)
- 简单树形dp uvaLive 4472
- UVALive 6434 简单排序/DP
- <Abnormal Crowd Behavior Detection using Social Force Model> 笔记
- VB-交换
- iOS 中的设计模式--委托代理
- hdu【1561】The more, The Better
- hash总结
- UVALive 4256 Salesmen 【简单dp】
- 动态规划总结与题目分类
- 关联型容器
- json笔记
- BZOJ 1051 || POJ 2186 受欢迎的牛 Tarjan
- c++初学者的笔记
- 【BZOJ1003】【ZJOI2006】物流运输trans
- Ultra-Pull-To-Refresh上拉加载的使用
- android LinearLayout分割线设置