POJ1692 Crossed Matchings DP
来源:互联网 发布:电子导游软件 编辑:程序博客网 时间:2024/04/19 23:55
POJ1692 Crossed Matchings DP
Description
给出两列数,要求对上下相同的数进行连线,要求
1.一个数最多连一条线。
2.一条线必须且仅与一条线相交。
求最多可以连出几条线。
题解
这一题可以用LIS的思想来建立状态转移方程。
令f[i][j]表示第一行到i个数,第二行到j个数的答案。
如果能找到
那么
#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#define MAXN 100+10using namespace std;int f[MAXN][MAXN],a[MAXN],b[MAXN],t,n,m;int main(){ scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(f,0,sizeof(f)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++) scanf("%d",&b[i]); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { int x,y; f[i][j]=max(f[i-1][j],f[i][j-1]); if(a[i]==b[j]) continue ; for(x=i-1;x>0;x--) if(a[x]==b[j]) break; for(y=j-1;y>0;y--) if(b[y]==a[i]) break; if(!x||!y) continue ; f[i][j]=max(f[i][j],f[x-1][y-1]+2); } } printf("%d\n",f[n][m]); } return 0;}
0 0
- POJ1692 Crossed Matchings DP
- POJ1692 Crossed Matchings(dp)
- ZOJ1425 POJ1692 Crossed Matchings
- POJ1692:Crossed Matchings
- POJ1692 Crossed Matchings
- poj1692 Crossed Matchings(dp,最长公共子序列变形,好题)
- ZOJ1425 Crossed Matchings dp
- Crossed Matchings zoj1425 dp
- 北大ACM poj1692 Crossed Matchings(动态规划)
- POJ1692————Crossed Matchings(动态规划)
- POJ 1692 Crossed Matchings(dp).
- POJ 1692 Crossed Matchings(DP)
- POJ 1692 Crossed Matchings(DP)
- POJ 1692 Crossed Matchings(DP)
- poj 1692 Crossed Matchings DP
- poj 1692 Crossed Matchings(DP)
- POJ 1692 Crossed Matchings (DP) #by Plato
- POJ 1692 Crossed Matchings(DP)
- 05-树8 File Transfer (25分)
- zookeeper(一) 介绍,搭建,使用
- solr cache 1
- Ubuntu16.04搜狗輸入法只有懸浮窗,不能輸入中文問題
- shared_ptr之定制删除器
- POJ1692 Crossed Matchings DP
- Huffman 编解码算法实现与压缩效率分析
- 集合迭代器 listIterator()
- 1106. Lowest Price in Supply Chain (25)[树的遍历]
- 用随机森林做特征选择
- easyx的应用
- C# 委托用法、匿名方法、Lambda表达式
- Node.js发送HTTP请求
- 88-非阻塞 connect 版本的 web 客户程序