UVALive4256[Salesmen] 动态规划
来源:互联网 发布:it网络工程师培训 编辑:程序博客网 时间:2024/05/16 14:54
题目链接
题目大意:给出一张图,然后给出一个序列,修改序列中一些数字,要求使这个序列相邻的两个点.要么是相同的点,要么在图中是相邻点;
解题报告:
:dp[i][j]表示序列前i个数以j结尾需要修改的最小个数
dp[i][j]=min( dp[i-1][k] + (j==a[i])?0:1 ) k和j连通或相同
#include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std;const int maxn = 110;#define Inf 0x3f3f3f3fvector<int> G[maxn];int A[maxn*2], dp[maxn*2][maxn];int main(){ int T; scanf("%d", &T ); while( T-- ) { int n, m, l; scanf("%d%d", &n, &m ); for ( int i=1; i<=n; i++ ) G[i].clear(); for ( int i=1; i<=n; i++ ) G[i].push_back(i); for ( int i=1; i<=m; i++ ){ int x, y; scanf("%d%d", &x, &y ); G[y].push_back(x); G[x].push_back(y); } scanf("%d", &l ); for ( int i=1; i<=l; i++ ) scanf("%d", &A[i] ); for ( int i=1; i<=l; i++ ) for ( int j=1; j<=n; j++ ){ dp[i][j]=Inf; for ( int k=0; k<G[j].size(); k++ ){ if( j==A[i] ) dp[i][j]=min(dp[i][j], dp[i-1][G[j][k]] ); else dp[i][j]=min(dp[i][j], dp[i-1][G[j][k]]+1 ); } } int ans=Inf; for ( int i=1; i<=n; i++ ) ans=min(ans, dp[l][i]); printf("%d\n", ans); } return 0;}
阅读全文
0 0
- UVALive4256[Salesmen] 动态规划
- UVA1424----Salesmen----动态规划
- uvalive4256
- Salesmen
- uvalive4256(DP)
- 动态规划!!!动态规划!!!
- UVALive4256-Salesman(dp)
- LA4256 Salesmen
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- PAT_乙级训练记录 (B1032)
- Python实现汉诺塔递归经典算法
- 美团校招金融后端面试面试官给出的题目给出一个二元组(x,y)给出x值对应y的个数,如(1,2),(1,3),(1,4),(2,2),(2,2),输出1:3,2:1
- Vim编辑器的快捷键
- 【Hibernate】事务与并发处理
- UVALive4256[Salesmen] 动态规划
- 第二周项目3
- 博客地址
- Mvp+RxJava2+Retrofit2 搭建一个属于自己的开发框架
- python------流程控制
- eclipse中spring配置文件的自动提示和命名空间的添加
- 今天开通博客
- oracle存储过程及自定义函数(存储函数)初学
- JAVA运算符