hdu 1423 最长公共递增子序列

这题一开始把我给坑了,我还没知道LCIS的算法,然后就慢慢搞吧,幸运的是还真写出来了,只不过麻烦了一点。

我是将该题转换为多条线段相交,然后找出最多多少条不相交,并且其数值死递增的。

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int dp[510][510];
int list1[510],list2[510];
struct Edge{int val,vex[510];int pos;
}p[510];
void init()
{int i,j;for(i=0;i<=500;i++)for(j=0;j<=500;j++)dp[i][j]=1;for(i=0;i<=500;i++)p[i].pos=0;
}int main()
{int t,n,m,i,j,k,r,f;scanf("%d",&t);while(t--){init();scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&list1[i]);scanf("%d",&m);for(i=1;i<=m;i++)scanf("%d",&list2[i]);int f=0;for(i=1;i<=n;i++){for(j=1;j<=m;j++){if(list1[i]==list2[j]){p[i].val=list1[i];p[i].vex[p[i].pos++]=j;f=1;}}}/*for(i=1;i<=n;i++){cout<<" ** "<<p[i].val<<" ** :";for(j=0;j<p[i].pos;j++)cout<<p[i].vex[j]<<" ";cout<<endl;}*/int Max=0;if(f)Max=1;for(i=1;i<=n;i++){for(j=1;j<i;j++){if(p[i].val>p[j].val){//cout<<"ok"<<endl;//cout<<p[i].val<<"   "<<p[j].val<<endl;for(k=0;k<p[i].pos;k++){for(r=0;r<p[j].pos;r++){if(p[i].vex[k]>p[j].vex[r])dp[i][p[i].vex[k]]=max(dp[i][p[i].vex[k]],dp[j][p[j].vex[r]]+1);if(dp[i][p[i].vex[k]]>Max){Max=dp[i][p[i].vex[k]];//cout<<Max<<endl;
                            }}}}} }printf("%d\n",Max);if(t)printf("\n");}return 0;
}


正解的代码有如下两种版本,一种是一维数组,一种二维。思想是一样的。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[510][510],a[510],b[510];
int LCIS(int n,int m)
{int i,j,k,temp;int ans=0;memset(dp,0,sizeof(dp));for(i=1;i<=n;i++){temp=0;for(j=1;j<=m;j++){dp[i][j]=dp[i-1][j];if(a[i]==b[j]) dp[i][j]=temp+1;if(a[i]>b[j]&&dp[i-1][j]>temp)temp=dp[i-1][j];if(ans<dp[i][j])ans=dp[i][j];}}return ans;
}
int main()
{int t,n,m,i,j;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);scanf("%d",&m);for(i=1;i<=m;i++)scanf("%d",&b[i]);printf("%d\n",LCIS(n,m));if(t)printf("\n");}
}
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[510],a[510],b[510];
int LCIS(int n,int m)
{int i,j,k;memset(f,0,sizeof(f));for(i=1;i<=n;i++){    k=0;for(j=1;j<=m;j++){    if(a[i]==b[j])f[j]=max(f[j],k+1);if(a[i]>b[j]&&f[j]>k)k=f[j];//cout<<k<<endl;
        }}int ans=0;for(i=0;i<=m;i++)ans=max(ans,f[i]);return ans;
}
int main()
{int t,n,m,i,j;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);scanf("%d",&m);for(i=1;i<=m;i++)scanf("%d",&b[i]);printf("%d\n",LCIS(n,m));if(t)printf("\n");}
}

 

转载于:https://www.cnblogs.com/wangfang20/p/3175439.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓从业者应该关注:Android 6.0的运行时权限

Android 6.0&#xff0c;代号棉花糖&#xff0c;自发布伊始&#xff0c;其主要的特征运行时权限就很受关注。因为这一特征不仅改善了用户对于应用的使用体验&#xff0c;还使得应用开发者在实践开发中需要做出改变。 没有深入了解运行时权限的开发者通常会有很多疑问&#xff0…

git把另一个盘的代码上传_如何使用Git上传代码到GitHub

初始化Git1. 安装Git客户端一路下一步下一步既可2. 配置Git1. 在电脑硬盘里找一块地方存放本地仓库,右键Git Bash进入git命令行执行如下代码 生成.git文件夹,表示本地git创建成功git config --global user.name "littonishir"git config --global user.email "l…

sh脚本学习之: sh脚本 、sed、awk

sh脚本 sh命令的批处理文件&#xff0c;支持更复杂的逻辑。  Shell中的变量 参数   $0  当前脚本路径 $1....$n  脚本执行对应的第n个参数 条件判断   文件判断 test [op] path e存在  f是文件  d是目录  r可读  w可写  x可执行   if判断/case if[条件判…

Silverlight OOB Setup

Sl的安装大家都知道&#xff1a;在程序点右键&#xff0c;选择安装。有没有另外一种方法&#xff0c;类似普通软件那样&#xff0c;通过安装包安装&#xff1f;答案当然是 有参考&#xff1a;http://www.code Technorati 标签: project.com/KB/install/slsetup.aspx思路很简单&…

2016-04-29 二分查找的面试题

为什么80%的码农都做不了架构师&#xff1f;>>> 1.面试题 例如&#xff1a; ip计算后的值&#xff1d;53文本内容&#xff1a;1,100,北京 101,1000,上海 1001,3001,广州 ...求ip53对应的省份2.代码如下&#xff1a; #!/usr/bin/python # coding: utf8def ip_find(i…

gettype拿不到值_王者荣耀:被低估的强势打野,就是这位拿大锤子的阿姨!

王者峡谷的小伙伴你们好&#xff0c;今天就为你们推荐一下这位野区女霸主钟无艳&#xff0c;不仅高伤害而且操作简单&#xff01;版本更新在5月14日版本更新中&#xff0c;钟无艳的三个技能都被加强了&#xff0c;所有的蓝耗都被固定&#xff0c;不再随技能等级的成长值&#x…

如何培训

Ground roles 1>No phone,no computer.2>没有私下讨论 3>parkng Lot 1. 演讲技巧 2. 隐喻 说服别人时&#xff0c;讲故事&#xff0c;举例子 3. 问题回答 4. 会场设置 转载于:https://www.cnblogs.com/myfav/p/3176621.html

【笔记】MATLAB中的图形(2)

三维作图 1、mesh(z)语句 mesh(z)语句可以给出矩阵z元素的三维消隐图&#xff0c;网络表面由z坐标点定义&#xff0c;与前面叙述的x-y平面的线格相同&#xff0c;图形由临近的点连接而成。它可用来显示用其他方式难以输出的包含大量数据的大型矩阵&#xff0c;也可以用来绘制z变…

Kindeditor放置两个调用readonly错误

开始 需要调用Kindeditor中的readonly的方法&#xff0c;但是一直提示edit is undefined 而editor.readonly(true)又只对第一个对象有效 所以只能换换形式&#xff0c;干脆将下面的kindeditor拿上来 虽然是满足自己这个需求&#xff0c;但是真正的原因解决办法&#xff0c;还是…

acl在内核里的位置_Linux 进程在内核眼中是什么样子的?

本篇算是进程管理的的揭幕篇&#xff0c;简单介绍一个进程在内核眼里的来龙去脉&#xff0c;为接下来的进程创建&#xff0c;进程调度&#xff0c;进程管理等篇章做好学习准备。从程序到进程再到内核啥是程序&#xff0c;啥是进程&#xff0c;一张图可以给我们解释&#xff1a;…

majikan

转载于:https://www.cnblogs.com/YOUEN/p/3179091.html

sql语句查询数据库返回结果转换显示自定义字段

在开发中经常遇到在数据中用单字符保存数据对应简单信息&#xff0c;比如性别、状态、与否等。如果要求在绑定数据源并显示对应字段&#xff0c;比如性别&#xff1a;1表示男&#xff0c;0表示女&#xff1b;状态&#xff1a;1表示有效&#xff0c;0表示失效等等。简单一句sql语…

经典中的品味:第一章 C++的Hello,World!

“程序设计要通过编写程序的实践来学习”—Brian Kernighan 1.1 程序 何为程序?简单的说&#xff0c;就是为了使计算机能够做事&#xff0c;你需要在繁琐的细节中告诉它怎么做。对于怎么做的描述就是程序。编程是书写和测试怎么做的过程。维基百科上说&#xff0c;一个程序就像…

本地数据jqGrid分页

var mydata; $(function() { var str ; str "<span>共<span idp_total></span>条记录</span> " str "<span>每页" "<select idset_page_size classui-button ui-widget ui-state-default ui-corner-all&g…

避免将项目名称用作映射类型名称

避免将项目名称用作映射类型名称 在 Visual Studio 中向 BizTalk 项目添加新映射时&#xff0c;请不要将项目名称用作类型名称。如果这样做&#xff0c;编译器将生成一个或多个错误&#xff0c;类似于“类型中不存在类型名称‘’”。 若要从 BizTalk 项目内更改映射的类型名称&…

大教堂和市集

该文的作者Eric Raymond是Open Source Software领域的领袖&#xff0c;这方面许多新的思想正是从他那儿产生的&#xff0c;同时他也是UNIX上最流行的Email软件Fetchmail 的作者。 HansB翻译 本博文仅做简单排版 一. 大教堂和市集 Linux的影响是非常巨大的。甚至在&#xff15…

使用eclipse svn塔建(配置)时的一点点心得

有没有人遇到下面这种情况&#xff1f;&#xff1f;自己创建的SVN如下&#xff1a; 但网上别人搭建好的是这样子的&#xff1a; 就是为什么我的只有个主文件&#xff0c;而没有src、webroot、meta-inf、web-inf等子文件呢&#xff1f;&#xff1f; 这是我找了很多网上的资料&am…

android 获取网卡mac_Java获取Linux安卓设备的mac地址方法

Java如何获取Linux或安卓Android设备的mac地址呢&#xff1f;方法非常简单&#xff0c;只需要使用下方代码即可轻松通过java获取mac地址了&#xff0c;代码如下&#xff1a;public String getMacAddress() {String macAddress null;String str "";try {//linux下查…

实例构造器和类(引用类型)

构造器是允许将类型的实例初始化为良好状态的一种特殊方法。构造器方法在“方法定义元数据表”中始终教.ctor。创建一个引用类型的实例时&#xff0c;首先为实例的数据字段分配内存&#xff0c;然后初始化对象的附加字段&#xff08;类型对象指针呵呵同步块索引&#xff09;&am…

android 文件选择器_Android 开发 打开系统文件、图片、视频等 实现单选多选功能...

在网上搜下&#xff0c;如何实现图片的多选或者文件的多选&#xff0c;令人纳闷的是居然多是moudle、或第三方jar包&#xff0c;当然第三方的工程功能复杂或兼容性比较好&#xff0c;并没有说明Android系统是如何提供多选的。既然这么多图片选择器的工程、或者是文件选择器的工…