当前位置: 首页 > wzjs >正文

建网站 pdf沈阳专业制作网站

建网站 pdf,沈阳专业制作网站,都用什么软件做网站,深圳ww参考文章 子序列 一个序列 A = a 1 , a 2 , … , a n A=a_1,a_2,…,a_n A=a1​,a2​,…,an​ 中任意删除若干项,剩余的序列叫做 A 的一个子序列。也可以认为是从序列 A 按原顺序保留任意若干项得到的序列。(例如&…

参考文章

子序列

一个序列 A = a 1 , a 2 , … , a n A=a_1,a_2,…,a_n Aa1,a2,,an 中任意删除若干项,剩余的序列叫做 A 的一个子序列。也可以认为是从序列 A 按原顺序保留任意若干项得到的序列。(例如:对序列{1,3,5,4,2,6,8,7}来说,序列{3,4,8,7}是它的一个子序列。)

LIS 最长上升子序列

代码

转移方程: d p [ i ] = m a x ( d p [ i ] , d p [ j ] + 1 ) dp[i]=max(dp[i],dp[j]+1) dp[i]=max(dp[i],dp[j]+1)

O(n2)

const int N=5010;
int n;
int a[N],dp[N],ans;
signed main(){cin>>n;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<n;i++){dp[i]=1;//自己是一个数列for(int j=0;j<i;j++){if(a[i]>a[j]){//上升dp[i]=max(dp[i],dp[j]+1);//找之前的数列ans=max(dp[i],ans);}}}cout<<ans<<endl;return 0;
}

O(nlogn)

//O(nlogn)做法 
//下降序列
int ans=1,dp[N]={0};
dp[1]=a[1];
for(int k=2;k<=i;k++){if(a[k]<=dp[ans]){//更小的向后取组成序列ans++;dp[ans]=a[k];//下降的序列}else{//跟最后的比不下降 就放前面相当于重开一个序列//dp下降 用greater<>int j=upper_bound(dp+1,dp+1+ans,a[k],greater<int>())-dp;//二分 找第一个小于a[k]的数dp[j]=a[k];//开下降序列}
}
//上升序列
int ans=1,dp[N]={0};
dp[1]=a[1];
for(int k=2;k<=i;k++){if(a[k]>dp[ans]){ans++;dp[ans]=a[k];}else{//dp上升int j=upper_bound(dp+1,dp+1+ans,a[k])-dp;//二分 找第一个大于a[k]的数dp[j]=a[k];}
}

例题

P1020 导弹拦截

构造下降序列找导弹数目,上升序列找系统数目。
二分查找 O(nlogn)做法
细节见代码。

signed main(){//freopen(".in","r",stdin);//freopen(".out","w",stdout);int i=1;while(cin>>a[i])i++;i--;//能拦截多少导弹int ans=1;dp[1]=a[1];for(int k=2;k<=i;k++){if(a[k]<=dp[ans]){//每一发炮弹都不能高于前一发的高度//比前一发低,记录数目ans++;dp[ans]=a[k];//构造一个下降的序列}else{//dp下降int j=upper_bound(dp+1,dp+1+ans,a[k],greater<int>())-dp;//二分 找第一个小于a[k]的数 相当于新开一个系统 新开一个下降序列dp[j]=a[k];//开下降序列}}cout<<ans<<endl;//用多少系统int cnt=1;x[1]=a[1];for(int k=2;k<=i;k++){if(x[cnt]<a[k]){//新开一个系统cnt++;x[cnt]=a[k];//x是上升序列}else{int j=lower_bound(x+1,x+cnt+1,a[k])-x;//找第一个大于等于a[k]的系统 能拦截这个炮弹x[j]=a[k];}// for(int m=1;m<=cnt;m++)cout<<x[m]<<' ';// cout<<endl;}cout<<cnt;return 0;
}

P2782 排序+LIS

const int N=2e5+10;
struct fr{int a,b;
}c[N];
int dp[N];
void solve(){int n;cin>>n;forr(i,1,n){cin>>c[i].a>>c[i].b;}sort(c+1,c+1+n,[](fr x,fr y){return x.a<y.a;});//找LISint ans=1;/*//超时forr(i,1,n){dp[i]=1;forr(j,1,i-1){if(c[i].b>c[j].b){dp[i]=max(dp[i],dp[j]+1);ans=max(dp[i],ans);}}}*/dp[1]=c[1].b;forr(i,2,n){if(c[i].b>dp[ans]){ans++;dp[ans]=c[i].b;}else{int j=upper_bound(dp+1,dp+ans+1,c[i].b)-dp;//替换第一个大于c[i].b的dp[j]=c[i].b;}}cout<<ans<<endl;
}

P1091 两次LIS

const int N=2e5+10;
int dp[N],dpr[N];
void solve(){int n;cin>>n;vector<int>t(n+1);forr(i,1,n){cin>>t[i];}int maxn=0;forr(i,1,n){// dp[i]=1;forr(j,1,i-1){if(t[i]>t[j])dp[i]=max(dp[j]+1,dp[i]);}}reforr(i,1,n){// dpr[i]=1;reforr(j,i+1,n){if(t[i]>t[j])dpr[i]=max(dpr[j]+1,dpr[i]);}}forr(i,1,n){// cout<<dp[i]<<' '<<dpr[i]<<' '<<dp[i]+dpr[i]<<endl;maxn=max(dp[i]+dpr[i]+1,maxn);}cout<<n-maxn<<endl;
}

LCS 最长公共子序列

代码

在这里插入图片描述
状态转移方程 d p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ j ] , d p [ i ] [ j − 1 ] , d p [ i − 1 ] [ j − 1 ] + 1 ) dp[i][j]=max(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]+1) dp[i][j]=max(dp[i1][j],dp[i][j1],dp[i1][j1]+1),dp是LCS的长度。

forr(i,1,len){forr(j,1,len){if(s1[i-1]==s2[j-1])dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}
}

例题

P1435

回文从前面看后面看都是一样的,所以思路就是将原字符串和逆转后的字符串找LCS,就是已经回文的。总长减去回文的就是不回文的。

const int N=1e3+10;
int dp[N][N];
void solve(){string s;cin>>s;string rs=string(s.rbegin(),s.rend());int len=s.size();forr(i,1,len){forr(j,1,len){if(s[i-1]==rs[j-1])dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}cout<<len-dp[len][len];
}

文章转载自:

http://u2TFDj8c.cwqpL.cn
http://D6WP3p1i.cwqpL.cn
http://FOdtgbGa.cwqpL.cn
http://ErnHfjFZ.cwqpL.cn
http://y0pajoqB.cwqpL.cn
http://x7yaECe3.cwqpL.cn
http://lTvZ2vZC.cwqpL.cn
http://G7LZHcvC.cwqpL.cn
http://nStBz4GY.cwqpL.cn
http://7tlM7oZH.cwqpL.cn
http://cxZnT27n.cwqpL.cn
http://eMv89qdP.cwqpL.cn
http://EGUaCICF.cwqpL.cn
http://M6FHltXv.cwqpL.cn
http://G2Z6SNRV.cwqpL.cn
http://qunHKt1U.cwqpL.cn
http://ZO2YgI98.cwqpL.cn
http://LI2GebqX.cwqpL.cn
http://ajlXlivh.cwqpL.cn
http://YQrklJI7.cwqpL.cn
http://IRf8uwOm.cwqpL.cn
http://R0U0qBEQ.cwqpL.cn
http://wKReazmm.cwqpL.cn
http://4SJE5BkH.cwqpL.cn
http://szD08Gpc.cwqpL.cn
http://qiL2Jikv.cwqpL.cn
http://nJi8PHSy.cwqpL.cn
http://wZaX6i3K.cwqpL.cn
http://C68oPd2i.cwqpL.cn
http://13Z2FS5F.cwqpL.cn
http://www.dtcms.com/wzjs/664422.html

相关文章:

  • 免费制作图片带字 手机软件四川网站建设seo
  • 网站建设政策网站未备案wordpress
  • 网站建设于朦胧网站如何做微信分享推广
  • 网站建设按钮建筑公司年度工作总结报告
  • 58临沂网站建设外发加工网官网
  • 做家务的男人们在哪个网站播出wordpress文章下载美化框
  • 手机端网站设计尺寸wordpress 非法阻断
  • 服务周到的网站建设wordpress图文插件
  • 网站认证方式淮安做网站优化
  • 网站产品页面域名注册局
  • 网站建设情况报告电脑培训中心
  • 怎么做网站的导航互联网时代
  • 济南中建设计院网站应聘工作哪个网站比较好
  • 个人网站设计 优帮云网站如何做网站名称
  • 网站 美食频道 建设网络营销策略理论
  • 模板网站的缺点重庆免费建站公司地址
  • 请人做网站卖东西好吗网站开发建站
  • 建设银行官方网站登录电脑版wordpress模板 美容
  • php网站建设制作设计企业展示网站建设需要做什么
  • 搜索引擎有哪些技巧淘宝做seo要建网站吗
  • 中国建设工程网站投标哪里有网站开发团队
  • 赤峰建网站服务器没有安装wordpress
  • 电子商务网站建设开发长沙网站设计
  • 个人网站 flash电商网站项目经验介绍
  • 小型网站用typescript室内装饰设计师
  • 网站备案找回网站做淘宝客排名会掉吗
  • 网站构建技术网站开发目的
  • 华为云速建站可以做英文网站个体工商户经营范围做网站
  • 做天猫网站多少钱广州建设银行分行招聘网站
  • 淄博网站电子商城平台建设设计签名的小程序