UVa10635 - Prince and Princess
/*基础: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相关推荐
- uva10635 Prince and Princess LCS 变 lIS
// uva10635 Prince and Princess LCS 变 lIS // 本意求LCS,但是规模有60000多,复杂度肯定不够 // 注意如果俩个序列的值的范围相同,那么可以在一个 / ...
- uva10635 Prince and Princess
给你两条路径,对于每条路径上的点各不相同,请你求出两条路径最长公共部分的长度. Input 第一行是数据组数t 每组数据的第一行包含三个数,n,p,q.其中路径上的点的大小不会超过n^2. 第二行包含 ...
- HDU 4685 Prince and Princess(二分匹配加点建图+强连通分量)
题目链接 Problem Description There are n princes and m princesses. Princess can marry any prince. But pr ...
- H - Prince and Princess 计蒜客 - 42402
H - Prince and Princess 计蒜客 - 42402 题意: 你现在要寻找公主,有三种人,第一种是说真话的人(至少为1,因为公主是说真话的人),第二种人是只会说假话的,第三种是胡说八 ...
- HDU4685:Prince and Princess(二分图匹配+tarjan)
Prince and Princess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- Prince and Princess问题解决
摘要 这是突然看到的一个非常有意思的题,是ACM-ICPC的原题,在这里稍微做一些分析,希望对大家有帮助. Prince and Princess 题面 王子m和公主Hff相爱,想要娶公主.虽然公主非 ...
- HDU - 4685 Prince and Princess(强连通缩点+二分图完备匹配)
题目链接:点击查看 题目大意:给出n个王子和m个公主,每个王子都有喜欢的公主,题目需要我们在尽可能多的王子可以匹配到喜欢的公主的情况下,求出每个王子所能娶的所有公主,必须保证王子娶了其中任何一个之后, ...
- UVA 10635——Prince and Princess
题意:给定两个长度为p+1和q+1的序列,求两个序列的LCS. 思路:如果直接使用朴素的LCS算法则O(pq)会超时,可以把A中出现的元素编码,然后映射到B(只保留AB都存在的元素),这样就转化为求B ...
- uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))
标题效果:有两个长度p+1和q+1该序列.的各种元素的每个序列不是相互同.并1~n^2之间的整数.个序列的第一个元素均为1. 求出A和B的最长公共子序列长度. 分析:本题是LCS问题,可是p*q< ...
最新文章
- 面试官:不会看 Explain执行计划,简历敢写 SQL 优化?
- c# 线程,同步,锁
- MIT、哈佛合作,这个研究让神经网络认清自己“几斤几两”!
- 阿里HBase的数据管道设施实践与演进
- 关于.NET中的Server push技术
- python爬虫多线程是什么意思_python爬虫中多线程的使用详解
- App设计灵感之十二组精美的数据图表展示App设计案例
- 基于Maven的spring_security入门
- EF Code First学习笔记:数据库创建(转)
- 深圳的小伙伴有福利了!
- 游戏帧数对比测试监控软件,8款游戏帧数对比实测 5800X多数超越11900K
- w7 internet信息服务器,Win7安装IIS Internet信息服务步骤
- spring boot-Soap协议客户端集成(根据WSDL文档调用WebService、maven的jaxb2插件)
- euht网络登录_基于EUHT技术的城轨高速线路车地无线网络解决方案
- 【MySQL】exists与in的比较
- 从牛顿-莱布尼兹公式到变限积分求导
- 小白也能看懂的 Web 前端入门文章(一个浏览器的自白)
- 【不可思议的Word2Vec】 2.训练好的模型
- 斗拱展开面积表_古建筑斗拱换算问题
- 2021全国人工智能师资培训走进北理工,百度飞桨助力高校教师提升AI能力
热门文章
- linux内核内存管理slub
- 【 javascript】JS语法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性
- 几个数字的组合方式种类个数
- 适用于实验室的新型能量回收污水处理铜板蚀刻机设计
- 链接器、链接过程及相关概念解析
- 百度Java面试题前200页和答案
- 贝叶斯统计推断(一)
- MATLAB用imshow画图时更改和显示坐标轴
- java 数字翻译成英文_AcWing 59. 把数字翻译成字符串--Java代码
- 解决ubantu里面报错findfont: Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans