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

公司网站怎么做推广/成品网站1688入口网页版

公司网站怎么做推广,成品网站1688入口网页版,银川网站制作公司,seo网站建设厦门思路出处 思路:状态表示:dp[i][j]代表a从1——i和b从1 —— j中以b[j]结尾的公共上升子序列的集合; dp[i][j]的值等于该集合的子序列中长度的最大值。首先依据公共子序列中是否包含a[i],将dp[i][j]所代表的集合划分成两个不重不漏…

在这里插入图片描述
在这里插入图片描述

思路出处

思路:状态表示:dp[i][j]代表a从1——i和b从1 —— j中以b[j]结尾的公共上升子序列的集合; dp[i][j]的值等于该集合的子序列中长度的最大值。首先依据公共子序列中是否包含a[i],将dp[i][j]所代表的集合划分成两个不重不漏的子集: 不包含a[i]的子集,最大值是dp[i - 1[[j]; 包含a[i]的子集,将这个子集继续划分,依据是子序列的倒数第二个元素在b中是哪个数:

    子序列只包含b[j]一个数,长度是1;子序列的倒数第二个数是b[1]的集合,最大长度是f[i - 1][1] + 1;…子序列的倒数第二个数是b[j - 1]的集合,最大长度是f[i - 1][j - 1] + 1;

如果直接按上述思路实现,需要三重循环:

for (int i = 1; i <= n; i ++ )
{for (int j = 1; j <= n; j ++ ){f[i][j] = f[i - 1][j];if (a[i] == b[j]){int maxv = 1;for (int k = 1; k < j; k ++ )if (a[i] > b[k])maxv = max(maxv, f[i - 1][k] + 1);f[i][j] = max(f[i][j], maxv);}}
}

然后我们发现每次循环求得的maxv是满足a[i] > b[k]的dp[i - 1][k] + 1的前缀最大值。 因此可以直接将maxv提到第一层循环外面,减少重复计算,此时只剩下两重循环。 最终答案枚举子序列结尾取最大值即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
//#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define SIS std::ios::sync_with_stdio(false)
#define space putchar(' ')
#define enter putchar('\n')
#define lson root<<1
#define rson root<<1|1
typedef pair<int,int> PII;
const int mod=100000000;
const int N=2e6+10;
const int M=1e3+10;
const int inf=0x7f7f7f7f;
const int maxx=2e5+7;ll gcd(ll a,ll b)
{return b==0?a:gcd(b,a%b);
}ll lcm(ll a,ll b)
{return a*(b/gcd(a,b));
}template <class T>
void read(T &x)
{char c;bool op = 0;while(c = getchar(), c < '0' || c > '9')if(c == '-')op = 1;x = c - '0';while(c = getchar(), c >= '0' && c <= '9')x = x * 10 + c - '0';if(op)x = -x;
}
template <class T>
void write(T x)
{if(x < 0)x = -x, putchar('-');if(x >= 10)write(x / 10);putchar('0' + x % 10);
}
ll qsm(int a,int b,int p)
{ll res=1%p;while(b){if(b&1) res=res*a%p;a=1ll*a*a%p;b>>=1;}return res;
}
int a[N],b[N];
int dp[3005][3005];int main()
{SIS;int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)cin>>b[i];for(int i=1;i<=n;i++){int mx=1;for(int j=1;j<=n;j++){dp[i][j]=dp[i-1][j];if(a[i]==b[j])dp[i][j]=max(mx,dp[i][j]);if(b[j]<a[i])mx=max(mx,dp[i][j]+1);}}int ans=0;for(int i=1;i<=n;i++)ans=max(ans,dp[n][i]);cout<<ans<<endl;return 0;
}
http://www.lbrq.cn/news/1416295.html

相关文章:

  • 我想花钱做网站/营销软文写作
  • 深圳专业做网站/学网络营销好就业吗
  • 东莞微网站建设公司哪家好/网络营销运营方案
  • 做网站服务器应该怎么配置/百度2022年版本下载
  • 如何做团购网站中的美食地处地图功能/阿里指数官网入口
  • 兰州北山生态建设局网站/网站建设费用
  • 新余公司做网站/网站推广服务外包
  • 网站建设网上学/seo关键词排名优化制作
  • 北京网站开发人员/淘宝排名查询
  • 佛山网站seo/线上营销推广方式都有哪些
  • 网络代理设置是什么意思/seo公司发展前景
  • 义乌个人兼职做建设网站/成都百度快照优化排名
  • 简述网站开发流程/2022年新闻摘抄十条简短
  • 动态速写网站/百度营销推广登录
  • 满洲里网站制作/怎么注册域名网址
  • 新网站怎么做权重/东莞网站建设优化技术
  • 整个网站全部乱码/免费网站电视剧全免费
  • 做公考题的网站/微博关键词排名优化
  • 山西省住房和城乡建设委员会网站/sem竞价
  • 网页设计建站/百度竞价推广自己可以做吗
  • 专门做恐怖电影的网站/chatgpt网址
  • 做兼职的网站贴吧/旺道智能seo系统
  • 备案 网站错了/长沙seo代理商
  • wordpress 外贸网站/seo优化方案策划书
  • 电子商务网站建设与维护实训题库/杭州专业seo服务公司
  • 黄冈seo推广优势/广州百度推广优化排名
  • 智慧团建网站登陆平台/今日大新闻
  • 政府网站建设排名/西安seo外包
  • 做网站 域名不属于/免费注册二级域名的网站
  • 网站优化的好处/网络广告推广方案
  • Day3--滑动窗口与双指针--2461. 长度为 K 子数组中的最大和,1423. 可获得的最大点数,1052. 爱生气的书店老板
  • Java增强for循环(小白友好版)
  • 力扣 hot100 Day76
  • 安卓14系统应用收不到开机广播
  • Gradle#构建生命周期三个阶段
  • STM32标准库学习笔记