/*基础:LCS*/
#include<bits/stdc++.h>
using namespace std;
int a[100];
int b[100];
int dp[100][100];
int main()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=m;i++) cin>>b[i];for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);printf("%d ",dp[i][j]);}printf("\n");}printf("%d\n",dp[n][m]);return 0;
}
/*
6 7
1 5 2 6 8 7
2 3 5 6 9 8 4
0 0 0 0 0 0 0
0 0 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 2 2 2 2
1 1 1 2 2 3 3
1 1 1 2 2 3 3
3
*/
/*基础:LIS*/
/*时间复杂度O(nlogn)*/
#include<bits/stdc++.h>
using namespace std;
const int INF = 0x7f7f7f7f;
int A[100];
int d[100];
int g[100];
int main()
{int n;cin>>n;for(int i=0;i<n;i++)  cin>>A[i];for(int i=1;i<=n;i++) g[i]=INF;for(int i=0;i<n;i++){int k=lower_bound(g+1,g+n+1,A[i])-g;d[i]=k;g[k]=A[i];}cout<<d[n-1]<<endl;return 0;
}

转换成求第二序列的LIS

就是把第一列中没出现的数变0,反转了一下,求序号和求序列一样

#include<bits/stdc++.h>
using namespace std;
const int maxn = 250*250;
const int INF = 1000000000;
int S[maxn],g[maxn],d[maxn];
int num[maxn];
int main(){int T;scanf("%d",&T);for(int kase=1;kase<=T;kase++){int N,p,q,x;scanf("%d%d%d",&N,&p,&q);memset(num,0,sizeof(num));for(int i=1;i<=p+1;i++) { scanf("%d",&x); num[x]=i; }int n=0;for(int i=0;i<q+1;i++) { scanf("%d",&x); if(num[x]) S[n++]=num[x]; }for(int i=1;i<=n;i++) g[i]=INF;int ans=0;for(int i=0;i<n;i++){int k=lower_bound(g+1,g+n+1,S[i])-g;d[i]=k;g[k]=S[i];ans=max(ans,d[i]);}printf("Case %d: %d\n",kase,ans);}return 0;
}

UVa10635 - Prince and Princess相关推荐

  1. uva10635 Prince and Princess LCS 变 lIS

    // uva10635 Prince and Princess LCS 变 lIS // 本意求LCS,但是规模有60000多,复杂度肯定不够 // 注意如果俩个序列的值的范围相同,那么可以在一个 / ...

  2. uva10635 Prince and Princess

    给你两条路径,对于每条路径上的点各不相同,请你求出两条路径最长公共部分的长度. Input 第一行是数据组数t 每组数据的第一行包含三个数,n,p,q.其中路径上的点的大小不会超过n^2. 第二行包含 ...

  3. HDU 4685 Prince and Princess(二分匹配加点建图+强连通分量)

    题目链接 Problem Description There are n princes and m princesses. Princess can marry any prince. But pr ...

  4. H - Prince and Princess 计蒜客 - 42402

    H - Prince and Princess 计蒜客 - 42402 题意: 你现在要寻找公主,有三种人,第一种是说真话的人(至少为1,因为公主是说真话的人),第二种人是只会说假话的,第三种是胡说八 ...

  5. HDU4685:Prince and Princess(二分图匹配+tarjan)

    Prince and Princess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Othe ...

  6. Prince and Princess问题解决

    摘要 这是突然看到的一个非常有意思的题,是ACM-ICPC的原题,在这里稍微做一些分析,希望对大家有帮助. Prince and Princess 题面 王子m和公主Hff相爱,想要娶公主.虽然公主非 ...

  7. HDU - 4685 Prince and Princess(强连通缩点+二分图完备匹配)

    题目链接:点击查看 题目大意:给出n个王子和m个公主,每个王子都有喜欢的公主,题目需要我们在尽可能多的王子可以匹配到喜欢的公主的情况下,求出每个王子所能娶的所有公主,必须保证王子娶了其中任何一个之后, ...

  8. UVA 10635——Prince and Princess

    题意:给定两个长度为p+1和q+1的序列,求两个序列的LCS. 思路:如果直接使用朴素的LCS算法则O(pq)会超时,可以把A中出现的元素编码,然后映射到B(只保留AB都存在的元素),这样就转化为求B ...

  9. uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))

    标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q< ...

最新文章

  1. 面试官:不会看 Explain执行计划,简历敢写 SQL 优化?
  2. c# 线程,同步,锁
  3. MIT、哈佛合作,这个研究让神经网络认清自己“几斤几两”!
  4. 阿里HBase的数据管道设施实践与演进
  5. 关于.NET中的Server push技术
  6. python爬虫多线程是什么意思_python爬虫中多线程的使用详解
  7. App设计灵感之十二组精美的数据图表展示App设计案例
  8. 基于Maven的spring_security入门
  9. EF Code First学习笔记:数据库创建(转)
  10. 深圳的小伙伴有福利了!
  11. 游戏帧数对比测试监控软件,8款游戏帧数对比实测 5800X多数超越11900K
  12. w7 internet信息服务器,Win7安装IIS Internet信息服务步骤
  13. spring boot-Soap协议客户端集成(根据WSDL文档调用WebService、maven的jaxb2插件)
  14. euht网络登录_基于EUHT技术的城轨高速线路车地无线网络解决方案
  15. 【MySQL】exists与in的比较
  16. 从牛顿-莱布尼兹公式到变限积分求导
  17. 小白也能看懂的 Web 前端入门文章(一个浏览器的自白)
  18. 【不可思议的Word2Vec】 2.训练好的模型
  19. 斗拱展开面积表_古建筑斗拱换算问题
  20. 2021全国人工智能师资培训走进北理工,百度飞桨助力高校教师提升AI能力

热门文章

  1. linux内核内存管理slub
  2. 【 javascript】JS语法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性
  3. 几个数字的组合方式种类个数
  4. 适用于实验室的新型能量回收污水处理铜板蚀刻机设计
  5. 链接器、链接过程及相关概念解析
  6. 百度Java面试题前200页和答案
  7. 贝叶斯统计推断(一)
  8. MATLAB用imshow画图时更改和显示坐标轴
  9. java 数字翻译成英文_AcWing 59. 把数字翻译成字符串--Java代码
  10. 解决ubantu里面报错findfont: Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans