网站建设与运营第二次在线作业/地推推广方案

网站建设与运营第二次在线作业,地推推广方案,威海建设网站,网站搜索下拉是怎么做的文章目录 线性dp数字三角形题目思路 LIS(最长上升子序列)代码(n^2)二分优化(nlogn) LCS(最长公共子序列)代码 LCS——>>LIS思路代码 最长公共子串最长公共上升子序列(LCIS) 线…

文章目录

  • 线性dp
    • 数字三角形
      • 题目
      • 思路
    • LIS(最长上升子序列)
      • 代码(n^2)
      • 二分优化(nlogn)
    • LCS(最长公共子序列)
      • 代码
    • LCS——>>LIS
      • 思路
      • 代码
    • 最长公共子串
    • 最长公共上升子序列(LCIS)

线性dp

数字三角形

P1216 数字三角形 - 洛谷

题目

观察下面的数字金字塔。

写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。

思路

每个数字只能有上方,左上,数字递推而来。最后计算最底层最大值。

int a[1100][1100],f[1100][1100];
void solve()
{int n;cin>>n;fir(i,1,n)fir(j,1,i){cin>>a[i][j];}fir(i,1,n){fir(j,1,i)f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j];}int mx=0;fir(i,1,n)mx=max(f[n][i],mx);cout<<mx<<'\n';
}
  • 那如果向左和向右移动次数相差不能大于1,最大值又是多少了?

    易知,当n为偶数,最后一层落在的点一定在n/2或n/2+1.而n为奇数时,最后一层落在的点一定在n/2+1

LIS(最长上升子序列)

例题

B3637 最长上升子序列 - 洛谷 | 计算机科学教育新生态

数组f【i】,用来存储以a【i】作末尾的上升子序列长度。

代码(n^2)

#include<bits/stdc++.h>
using namespace std;
int a[1000050],f[100050];
int main()
{int n,ans=1;cin>>n;for(int i=1;i<=n;i++)cin>>a[i]; fill(f,f+n+2,1);//初始化for(int i=2;i<=n;i++){for(int j=1;j<i;j++){if(a[j]<a[i])//递增f[i]=max(f[i],f[j]+1);}ans=max(ans,f[i]);}cout<<ans<<'\n';
}

二分优化(nlogn)

维和一个数组b,存放上升子序列。 其中 b[i]表示长度为 i 的上升子序列的最小末尾元素。

从前往后遍历数组a

  • a[i]>b[len]末尾元素,b[++len]=a[i]
  • a[i]<=b[len],用a[i] 替换b数组第一个>=a[i]的元素

最终b数组的长度便是答案

用vector和lower_bound实现

#include<bits/stdc++.h>
using namespace std;
int n,a[1000050];
int main()
{cin>>n;vector<int> d;for(int i=0;i<n;i++){    cin>>a[i];auto it=lower_bound(d.begin(),d.end(),a[i]);if(it==d.end())d.push_back(a[i]);else *it=a[i];}cout<<d.size();
}

LCS(最长公共子序列)

这个视频讲的不错E05 线性DP 最长公共子序列,本文思路节选于此视频

例题

U165581 最长公共子序列(Longest Common Subsequence,LCS) - 洛谷 | 计算机科学教育新生态

f[i][j] 表示序列 a[1...i]b[1...j] 的最长公共子序列长度。

现在判断末尾元素 a[i]b[j] 是否在公共子序列中:

  1. a[i] = b[j]
    • a[i]b[j] 在公共子序列中。
    • 递推关系:f[i][j] = f[i-1][j-1] + 1
  2. a[i] ≠ b[j],且 a[i] 不在公共子序列中
    • 则可去掉 a[i]
    • 递推关系:f[i][j] = f[i-1][j]
  3. a[i] ≠ b[j],且 b[j] 不在公共子序列中
    • 则可去掉 b[j]
    • 递推关系:f[i][j] = f[i][j-1]

状态转移方程

f [ i ] [ j ] = { f [ i − 1 ] [ j − 1 ] + 1 , 若  a [ i ] = b [ j ] max ⁡ ( f [ i − 1 ] [ j ] , f [ i ] [ j − 1 ] ) , 若  a [ i ] ≠ b [ j ] f[i][j] = \begin{cases} f[i-1][j-1] + 1, & \text{若 } a[i] = b[j] \\ \max(f[i-1][j], f[i][j-1]), & \text{若 } a[i] \neq b[j] \end{cases} f[i][j]={f[i1][j1]+1,max(f[i1][j],f[i][j1]), a[i]=b[j] a[i]=b[j]
边界条件

f [ 0 ] [ j ] = 0 ; f [ i ] [ 0 ] = 0 ; f[0][j]=0;f[i][0]=0; f[0][j]=0;f[i][0]=0;

代码

int n,f[N][N];
int main()
{   string a,b;cin>>a>>b;for(int i=0;i<a.size();i++)for(int j=0;j<b.size();j++){if(a[i]==b[j])f[i+1][j+1]=f[i][j]+1;elsef[i+1][j+1]=max(f[i][j+1],f[i+1][j]);}cout<<f[a.size()][b.size()];
}

LCS——>>LIS

例题

P1439 【模板】最长公共子序列 - 洛谷

思路

此题特殊之处在于:全排列

数据范围大,N^2不行

既然两个数组都是1-n的全排列,那么可以用一个新的数组c存放b[i]在数组a中的位置,只有c中递增的子序列才可构成a,b的公共子序列。这样题目就转化为求最长上升子序列了

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N],b[N],c[N];
int main()
{   cin>>n;for(int i=1;i<=n;i++){cin>>a[i];b[a[i]]=i;//哈希}for(int i=1;i<=n;i++){ int x;cin>>x;c[i]=b[x];//LCS——>LIS}vector<int> v;//二分优化的最长上升子序列for(int i=1;i<=n;i++){auto it=lower_bound(v.begin(),v.end(),c[i]);if(it==v.end()) v.push_back(c[i]);else *it=c[i];}cout<<v.size(); 
}

最长公共子串

  • 公共子串:字符必须是连续相等的

  • 公共子序列:字符必须是相等的,可以不连续

    f[i][j] 表示序列 a[1...i]b[1...j] 的最长公共子串长度。

与最长公共子序列类似,递推公式有所不同。
f [ i ] [ j ] = { f [ i − 1 ] [ j − 1 ] + 1 , 若  a [ i ] = b [ j ] 0 , 若  a [ i ] ≠ b [ j ] f[i][j] = \begin{cases} f[i-1][j-1] + 1, & \text{若 } a[i] = b[j] \\\ 0, & \text{若 } a[i] \neq b[j]\end{cases} f[i][j]={f[i1][j1]+1, 0 a[i]=b[j] a[i]=b[j]
最长公共子串不一定是以n,m结尾的,需要比较出最大值。

最长公共上升子序列(LCIS)

这是LIS和LCS的结合。

动态规划状态转移

  1. 初始化:我们初始化一个二维数组 f,大小为 (n+1) x (n+1),并将所有元素初始化为 0。这里 n 是序列 A 和 B 的长度。

  2. 状态转移

    首先判断公共子序列中是否包含a[i]

    • 不包含a [i]的子集,最大值是f[i-1] [j]

    • 包含a[i] 的子集,将这个子集继续划分,依据是子序列的倒数第二个元素在b[]中是哪个数(也就是由谁递推而来)

      所以需要一个mx,来记录在当前 i 的条件下,满足 a[i] > b[k]f[i - 1][k] + 1 的前缀最大值。

  3. 优化:为了提高效率,我们可以在遍历 j 的过程中维护一个最大值 mx,表示在当前 i 的情况下,所有 f [i-1] [k] 的最大值,其中 k < j 且 B[k] < A[i]。这样,我们就可以在 O(1) 的时间更新 f[i][j]。

  • f[i][j] 表示所有 a[1 ~ i]b[1 ~ j] 中以 b[j] 结尾的公共上升子序列的长度最大值。
  • mx 用于记录在当前 i 的条件下,满足 a[i] > b[k]f[i - 1][k] + 1 的前缀最大值。
  • 下面代码是一维优化后的代码
int a[3050],b[3050],f[3050];
void solve()
{int n,mx;cin>>n;fir(i,1,n)cin>>a[i];fir(i,1,n)cin>>b[i];fir(i,1,n)//只看前i个{mx=1;fir(j,1,n){if(a[i]==b[j]) f[j]=max(f[j],mx);if(a[i]>b[j]) mx=max(mx,f[j]+1);}}mx=0;fir(i,1,n)mx=max(f[i],mx);cout<<mx<<'\n';
}  

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

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

相关文章

《AI大模型趣味实战》No2 : 快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色(中)

快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色(中) 摘要 在上一篇文章中&#xff0c;我们介绍了如何搭建一个基础的家庭网站&#xff08;V1.0版本&#xff09;&#xff0c;包含了用户管理、相册管理、时间线和日历等功能。本文将继续深入&#xff0c;详细…

软件需求分类、需求获取(高软46)

系列文章目录 软件需求分类&#xff0c;需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;

Zabbix7.0+DeepSeek大模型实现人工智能告警分析

一、方案概述 本方案基于Zabbix7.0监控系统,通过底层webhook脚本机制集成Deepseek做故障分析提供解决方案,构建智能化运维体系。 其核心架构包括: Zabbix监控平台:负责实时监控和告警触发 Webhook接口:实现告警信息的传递 Deepseek AI平台:提供故障智能分析能力 二、…

CPU相关:实时cpu信息接口

[rootxxx ~]# cat /proc/cpuinfo #通过实时cpu信息接口查看cpu信息

A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第2部分

3、微调&#xff08;上一部分内容&#xff09; 4、LLMs的对齐 大型语言模型&#xff08;LLMs&#xff09;中的对齐涉及引导模型输出以符合人类预期和偏好&#xff0c;特别是在安全关键或用户面对的应用程序中。本章讨论了实现对齐的三个主要范式&#xff1a; 带有反馈的人工…

热key探测技术架构设计与实践

参考&#xff1a; 得物热点探测技术架构设计与实践 Redis数据倾斜与JD开源hotkey源码分析揭秘 京东热点检测 HotKey 学习笔记 hotkey: 京东App后台中间件&#xff0c;毫秒级探测热点数据&#xff0c;毫秒级推送至服务器集群内存&#xff0c;大幅降低热key对数据层查询压力 …

Windows 环境图形化安装 Oracle 23ai

文章目录 Windows 环境安装23ai下载Oracle 23ai安装包安装安装详细图形界面连接Oracle 23ai 安装过程中遇到的错误安装过其他版本数据库&#xff0c;设置了ORACLE_HOME或 TNS_ADMIN解决方法 无法访问Windows Installer Serviece (error 1719)解决方法 其他注意 参考&#xff1a…

基于SpringBoot3+Druid数据库连接池与外部PostgreSQL的Kubernetes Pod YAML全解析

说明 一个基于Spring Boot 3 Druid 外部PostgreSQL的Kubernetes Pod YAML详细解析&#xff0c;包含最佳实践和关键配置说明&#xff1a; YAML apiVersion: apps/v1 kind: Deployment metadata:name: springboot-applabels:app: springboot-app spec:replicas: 2selector:ma…

PyTorch 深度学习实战(14):Deep Deterministic Policy Gradient (DDPG) 算法

在上一篇文章中&#xff0c;我们介绍了 Proximal Policy Optimization (PPO) 算法&#xff0c;并使用它解决了 CartPole 问题。本文将深入探讨 Deep Deterministic Policy Gradient (DDPG) 算法&#xff0c;这是一种用于连续动作空间的强化学习算法。我们将使用 PyTorch 实现 D…

【Agent实战】货物上架位置推荐助手(RAG方式+结构化prompt(CoT)+API工具结合ChatGPT4o能力Agent项目实践)

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 结论 效果图示 1.prompt 2. API工具封…

HarmonyOS NEXT开发进阶(十二):build-profile.json5 文件解析

文章目录 一、前言二、Hvigor脚本文件三、任务与任务依赖图四、多模块管理4.1 静态配置模块 五、分模块编译六、配置多目标产物七、配置APP多目标构建产物八、定义 product 中包含的 target九、拓展阅读 一、前言 编译构建工具DevEco Hvigor&#xff08;以下简称Hvigor&#x…

基于SSM + JSP 的图书商城系统

基于SSM的图书商城 网上书城、图书销售系统、图书销售平台 &#xff5c;Java&#xff5c;SSM&#xff5c;HTML&#xff5c;JSP&#xff5c; 项目采用技术&#xff1a; ①&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Tomcat ②&#xff1a;技术栈&#xff1a;Java、…

色板在数据可视化中的创新应用

色板在数据可视化中的创新应用&#xff1a;基于色彩感知理论的优化实践 引言 在数据可视化领域&#xff0c;色彩编码系统的设计已成为决定信息传递效能的核心要素。根据《Nature》期刊2024年发布的视觉认知研究&#xff0c;人类大脑对色彩的识别速度比形状快40%&#xff0c;色…

K8S学习之基础二十七:k8s中daemonset控制器

k8s中DaemonSet控制器 ​ DaemonSet控制器确保k8s集群中&#xff0c;所有节点都运行一个相同的pod&#xff0c;当node节点增加时&#xff0c;新节点也会自动创建一个pod&#xff0c;当node节点从集群移除&#xff0c;对应的pod也会自动删除。删除DaemonSet也会删除创建的pod。…

PyTorch 系列教程:使用CNN实现图像分类

图像分类是计算机视觉领域的一项基本任务&#xff0c;也是深度学习技术的一个常见应用。近年来&#xff0c;卷积神经网络&#xff08;cnn&#xff09;和PyTorch库的结合由于其易用性和鲁棒性已经成为执行图像分类的流行选择。 理解卷积神经网络&#xff08;cnn&#xff09; 卷…

Spring Cloud Stream - 构建高可靠消息驱动与事件溯源架构

一、引言 在分布式系统中&#xff0c;传统的 REST 调用模式往往导致耦合&#xff0c;难以满足高并发和异步解耦的需求。消息驱动架构&#xff08;EDA, Event-Driven Architecture&#xff09;通过异步通信、事件溯源等模式&#xff0c;提高了系统的扩展性与可观测性。 作为 S…

王者荣耀道具页面爬虫(json格式数据)

首先这个和英雄页面是不一样的&#xff0c;英雄页面的图片链接是直接放在源代码里面的&#xff0c;直接就可以请求到&#xff0c;但是这个源代码里面是没有的 虽然在检查页面能够搜索到&#xff0c;但是应该是动态加载的&#xff0c;源码中搜不到该链接 然后就去看看是不是某…

【一起来学kubernetes】12、k8s中的Endpoint详解

一、Endpoint的定义与作用二、Endpoint的创建与管理三、Endpoint的查看与组成四、EndpointSlice五、Endpoint的使用场景六、Endpoint与Service的关系1、定义与功能2、创建与管理3、关系与交互4、使用场景与特点 七、Endpoint的kubectl命令1. 查看Endpoint2. 创建Endpoint3. 编辑…

C# Enumerable类 之 集合操作

总目录 前言 在 C# 中&#xff0c;System.Linq.Enumerable 类是 LINQ&#xff08;Language Integrated Query&#xff09;的核心组成部分&#xff0c;它提供了一系列静态方法&#xff0c;用于操作实现了 IEnumerable 接口的集合。通过这些方法&#xff0c;我们可以轻松地对集合…

51c自动驾驶~合集54

我自己的原文哦~ https://blog.51cto.com/whaosoft/13517811 #Chameleon 快慢双系统&#xff01;清华&博世最新&#xff1a;无需训练即可解决复杂道路拓扑 在自动驾驶技术中&#xff0c;车道拓扑提取是实现无地图导航的核心任务之一。它要求系统不仅能检测出车道和交…