LA 5052 Genome Evolution (思维)
来源:互联网 发布:mac 4k 显示器 hdmi2 编辑:程序博客网 时间:2024/06/06 03:29
LA 5052 Genome Evolution
题目大意:
给1~n的两个排列A,B,统计有多少个子集A,B均有,子集要满足是连续序列,且至少包含两个元素.(1<=n<=5000)
题目分析:
对于两个子集,要满足元素相同,且是连续序列,则长度要一致.
若确定某一个点i为在A序列中的右边界,那么A序列中每往左加入一个元素j,在B中也会对应有一个位置.显然此时能满足元素相同的要求.
那么还需要是连续序列,若在B中的元素最左边在L,最右边在R.若R-L+1==i-j+1,即两序列的长度一致,则B中形成序列是连续序列.
代码
#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int maxn=3000+10;int A[maxn],B[maxn],pos[maxn],n;int main(){ while(scanf("%d",&n)==1&&n) { for(int i=0;i<n;i++) scanf("%d",&A[i]); for(int i=0;i<n;i++) scanf("%d",&B[i]),pos[B[i]]=i;//记录下每个数在B中对应位置 int ans=0; for(int i=1;i<n;i++) { int L=pos[A[i]],R=pos[A[i]]; for(int j=i-1;j>=0;j--) { L=min(L,pos[A[j]]); R=max(R,pos[A[j]]); if(R-L+1==i-j+1) ++ans; } } printf("%d\n",ans); } return 0;}
0 0
- LA 5052 Genome Evolution (思维)
- LA 5052 Genome Evolution -
- LA 5052 Genome Evolution
- Uva LA 5052 Genome Evolution
- UVaLive LA 5052 UVa 1481 - Genome Evolution (很巧妙的思维)
- UvaLive-5052-Genome Evolution
- UVALive - 5052 Genome Evolution
- UVALive - 5052 Genome Evolution 贪心
- Genome Evolution LA5052
- UVa 1481 - Genome Evolution
- Genome Evolution uvalive5052
- UVA 1481 - Genome Evolution(枚举技巧)
- uva 1481 - Genome Evolution(暴力)
- UVA - 1481 Genome Evolution 公式+二分
- UVALive5052 Genome Evolution(想法题)
- UVA 1481 Genome Evolution(高效算法优化)
- UVa 1481 Genome Evolution 解题报告(枚举)
- LA -- 3708 Graveyard 【思维】
- C语言开发必备基础只是------>Linux下C开发技能
- PKU图论基础题(转)
- 手机应用CI流程简介
- FireStart教程:基于SharePoint的出差报销流程六
- openstack网络(四)-虚机流量分析
- LA 5052 Genome Evolution (思维)
- Virtual Box下Linux与本机win7共享文件夹
- OkHttp之旅
- hdu 4864 Task
- 2016.12.15 接口
- DOM中监听节点变化的事件(变动事件)的用法 — 第13.4.6节
- 88
- 跟小马哥学算法leetcode_13
- sparksql各种数据源