动态规划之数字三角形模型+最长上升子序列模型

首先,我们从集合角度重新看待DP:

直接看题:https://www.acwing.com/problem/content/1029/

就是取纸条的原题,我们令f[i1,j1,i2,j2]表示从(1,1),(1,1)分别走到(i1,j1),(i2,j2)的路径的max

i1+j1==i2+j2,于是我们可以把状态变为f[k,i1,i2]表示走到(i1,k-i1),(i2,k-i2)的最大值。

对于最后一个状态,我们可以按照上下分成4中,同时转移时重合的化加w[i][j],否则就分别加一个

下面是AC代码:

#include <iostream>
#include <algorithm>using namespace std;const int N = 15;int n;
int w[N][N];
int f[N * 2][N][N];int main()
{scanf("%d", &n);int a, b, c;while (cin >> a >> b >> c, a || b || c) w[a][b] = c;for (int k = 2; k <= n + n; k ++ )for (int i1 = 1; i1 <= n; i1 ++ )for (int i2 = 1; i2 <= n; i2 ++ ){int j1 = k - i1, j2 = k - i2;if (j1 >= 1 && j1 <= n && j2 >= 1 && j2 <= n){int t = w[i1][j1];if (i1 != i2) t += w[i2][j2];int &x = f[k][i1][i2];x = max(x, f[k - 1][i1 - 1][i2 - 1] + t);x = max(x, f[k - 1][i1 - 1][i2] + t);x = max(x, f[k - 1][i1][i2 - 1] + t);x = max(x, f[k - 1][i1][i2] + t);}}printf("%d\n", f[2*n][n][n]);return 0;
}

接题:https://www.acwing.com/problem/content/189/

看到数据范围可以确定爆搜(BFS因为一层层存储量太大不推荐),这样就转换成导弹拦截的思路了:从前往后,对于一个导弹找到比他高的min插入即可,若没有就再开一个(注意防御系统一定是递增的)

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[10001];
int ans=50;
int up[100010],down[10000];
void dfs(int x,int u,int d)
{if(u+d>=ans) return;if(x==n+1){ans=min(ans,u+d);return;}//先上int f=-1;for(int i=1;i<=u;i++){if(up[i]>a[x]){f=i;break;}if(i==u) f=-1;}if(f==-1){up[u+1]=a[x];dfs(x+1,u+1,d);up[u+1]=0;}else{int t=up[f];up[f]=a[x];dfs(x+1,u,d);up[f]=t;}f=-1;for(int i=1;i<=d;i++){       if(down[i]<a[x]){f=i;break;}if(i==d) f=-1;}if(f==-1){down[d+1]=a[x];dfs(x+1,u,d+1);down[d+1]=0;}else{int t=down[f];down[f]=a[x];dfs(x+1,u,d);down[f]=t;}
}
int main()
{while(cin>>n){if(!n) break;for(int i=1;i<=n;i++) cin>>a[i];memset(up,0,sizeof(up));memset(down,0,sizeof(down));ans=50;dfs(1,0,0);cout<<ans<<endl;}
}

接题:https://www.acwing.com/problem/content/1018/

确定f[i][j]的集合:由第一个序列前i个字母,第二个前j个并以b[j]的公共上升子序列。

表示max,然后考虑计算:先按是否包含a[i]分成两类:不包含:f[i-1][j],包含:a[i]==b[j]

我们又可以把b分为以b[1]...b[j-1]以及空,对于b[k]就是f[i-1][k]+1

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[100010],b[100010];
int dp[3010][3005];
int main()
{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 maxv=0;for(int j=1;j<=n;j++){dp[i][j]=dp[i-1][j];if(a[i]==b[j]){dp[i][j]=max(dp[i][j],1);dp[i][j]=max(dp[i][j],maxv);}if(b[j]<a[i]) maxv=max(maxv,dp[i-1][j]+1);}}int res=0;for(int i=1;i<=n;i++) res=max(res,dp[n][i]);cout<<res;
}

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

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

相关文章

机器学习 | 对K-Means聚类假设的研究演示及实践示例

我们在Scikit-learn对K-means假设的调查中探索了揭示算法优势和局限性的场景。我们研究了K-means对不正确的聚类大小的敏感性&#xff0c;它在各向异性分布中面临的困难&#xff0c;它在不同的聚类方差中面临的困难&#xff0c;以及使用合成数据集的大小不均匀的聚类问题。我们…

准备工作+1、请求和响应+2、模型和管理站点

Django快速入门——创建一个基本的投票应用程序 准备工作1、创建虚拟环境2、安装django 1、请求和响应&#xff08;1&#xff09;创建项目&#xff08;2&#xff09;用于开发的简易服务器&#xff08;3&#xff09;创建投票应用&#xff08;4&#xff09;编写第一个视图1、编写…

家用激光投影仪品牌排行榜:这几个品牌口碑好产品好最适合家用

现在人们生活水平提升&#xff0c;对投影这类产品的认知接受度也提升&#xff0c;有条件的家庭都想在家里整一个家庭影院&#xff0c;对于这些消费者来说挑选一台性价比高的家用投影至关重要&#xff0c;既省到钱又买对了产品&#xff1b;投影市场发展迅速目前市面上大大小小的…

mongo数据库迁移

前言 mongo数据库迁移的方式目前常见的有两种&#xff1a; 1&#xff0c;mongodump与mongorestore 2&#xff0c;mongoimport与mongoexport 二者主要区别有&#xff1a; 1、mongoexport 可以导出json和csv格式&#xff0c; mongodump导出的是bson可读性不如前者 2&#xff0c;…

在Windows 10上快速显示桌面的几种方法,总有一种适合你

序言 有时你需要在Windows 10中快速查看你的桌面,但你不想乏味地最小化每个打开的应用程序窗口,或者移动它们并丢失它们的布局。幸运的是,有几种方法可以让你快速查看桌面,然后从你停止的地方重新开始。 如何使用任务栏按钮显示桌面 假设你正在随意浏览你最喜欢的网站,…

服了,jenkins找不到advanced

新手下载的最新版本&#xff0c;过新手入门的时候一直过不去&#xff0c;就跳过了。 想下载一个汉化&#xff0c;还下载不了。根据提示搜索&#xff0c;结果大家让去advanced找url&#xff0c;也找不到。

FreeRTOS 队列

队列是一种任务到任务、任务到中断、中断到任务数据交流的一种机制。在队列中可以存 储数量有限、大小固定的多个数据&#xff0c;队列中的每一个数据叫做队列项目&#xff0c;队列能够存储队列项 目的最大数量称为队列的长度&#xff0c;在创建队列的时候&#xff0c;就需要指…

揭秘与应对:病毒伪装文件夹的数据恢复策略

在数字时代&#xff0c;数据安全是每个人不可忽视的重要议题。而伪装文件夹&#xff0c;作为一种狡猾的数据安全威胁&#xff0c;正逐渐浮出水面&#xff0c;成为用户需要警惕的对象。这些伪装文件夹看似普通&#xff0c;实则隐藏着不为人知的秘密&#xff0c;它们通过模仿正常…

linux系统操作/基本命令/vim/权限修改/用户建立

Linux的目录结构&#xff1a; 一&#xff1a;在Linux系统中&#xff0c;路径之间的层级关系&#xff0c;使用:/来表示 注意:1、开头的/表示根目录 2、后面的/表示层级关系 二&#xff1a;在windows系统中&#xff0c;路径之间的层级关系&#xff0c;使用:\来表示 注意:1、D:表示…

移动应用性能收集工具原理解析

性能收集分析相关工具总览 收集、分析、展示移动应用性能数据的工具很多&#xff0c;大致可以分为如下几类。例如可收集多项性能指标的移动性能工具&#xff0c;perfdog&#xff0c;Solopi&#xff0c;其中Solopi开源&#xff0c;pefdog商业工具。可进行Crash分析的工具&#x…

猫超卡怎么使用?

天猫超市卡好像只能买天猫的东西 但是有时候淘宝、京东打折比天猫的单价还便宜 这样的话&#xff0c;猫超卡好像也没多大用处 这不&#xff0c;上个月618凑单的东西比在天猫超市买划算多了 最后我直接把猫超卡在收卡云上折现了&#xff0c;超划算

编程学单词:delta(希腊字母Δ/δ)

希腊字母表的第四个字母&#xff0c;大写为Δ&#xff0c;小写为δ。 (笔记模板由python脚本于2024年07月11日 12:32:56创建&#xff0c;本篇笔记适合喜欢写代码&#xff0c;更喜欢鼓捣Python的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.pyth…

算法 | NOIP1999 Cantor表

算法篇——Cantor的数表 - SteveWang - 博客园 (cnblogs.com) #include <bits/stdc.h> using namespace std; int high(int n) {return n*(n1)/2; } int main() {int k;cin>>k;int n1;while(1){if(high(n)>k){break;}n;} int mhigh(n);int wm-k1;if(n%20){cout…

Arcgis Api 三维聚合支持最新版API

Arcgis Api 三维聚合支持最新版API 最近有同学问我Arcgis api 三维聚合&#xff0c;官方还不支持三维聚合API&#xff0c;二维可以。所以依旧是通过GraphicLayers 类来实现&#xff0c;可支持最新Arcgis Api版本 效果图&#xff1a;

《计算机研究与发展》投稿经验

前言 记录下投计研展正刊的经验。跟专刊不同哈&#xff0c;专刊会更快&#xff0c;我看好像也有专刊的经验分享。【计算机研究与发展投稿记录】 期刊简介 来源计研展官网&#xff1a; 《计算机研究与发展》是中国科学院计算技术研究所和中国计算机学会联合主办的学术性期刊&a…

盲人出行体验攻略:蝙蝠避障,点亮前行的明灯

在繁华喧嚣的都市中&#xff0c;每一步都充满了未知与挑战&#xff0c;而对于盲人朋友们来说&#xff0c;出行更是一场无声的冒险。他们凭借着内心的勇气和坚韧的意志&#xff0c;在黑暗中摸索前行&#xff0c;每一步都承载着对生活的热爱与追求。今天&#xff0c;我们要深入探…

FLStudio21.3.12中文破解版本安装包win+mac电脑安装包下载

&#x1f3a4; FL Studio 21中文版&#xff1a;音乐制作新宠&#xff0c;让你的创作起飞&#xff01; 嗨&#xff0c;亲爱的音乐创作者们&#xff01;&#x1f44b;今天要和大家分享一个让我超级兴奋的宝藏软件——FL Studio 21中文版&#xff01;这不仅仅是一款音乐制作软件&…

STM32串口工作原理

STM32的串口是相当丰富的&#xff0c;功能也很强劲。最多可提供5 路串口&#xff0c;有分数波特率发生器、支持单线光通信和半双工单线通讯、支持LIN、智能卡协议和IrDA SIRENDEC 规范(仅串口3支持)、具有DMA等。 串口最基本的设置&#xff0c;就是波特率的设置。STM32的串口使…

移动应用稳定性测试

移动应用稳定性测试 使用Monkey等工具进行移动应用稳定性测试是一种常见的自动化测试方法。Monkey工具可以自动生成各种随机事件来模拟用户操作&#xff0c;从而测试应用在不同情况下的表现。在执行monkey命令后&#xff0c;主要观察以下的结果信息来评估移动应用的稳定性。 崩…

前后端通信 —— HTTP/HTTPS

目录 一、HTTP/HTTPS 简介 1、HTTP 2、HTTPS 二、HTTP 工作过程 三、HTTP 消息 1、HTTP消息结构 2、HTTP消息示例 四、HTTP 方法&#xff08;常用&#xff09; 1、GET 2、POST 3、PUT 4、DELETE 5、GET与POST对比 五、HTTP 状态码&#xff08;常用&#xff09; …