备战蓝桥杯---动态规划(入门1)

先补充一下背包问题:

于是,我们把每一组当成一个物品,f[k][v]表示前k组花费v的最大值。

转移方程还是max(f[k-1][v],f[k-1][v-c[i]]+w[i])

伪代码(注意循环顺序):

for 所有组:

        for v=max.....0

                for i:f[v]=max(f[v],f[v-c[i]]+w[i])

下面看看区间dp的应用:

下面是分析:

我们令f[i][j]表示从ai到aj的串中,有多少个匹配的括号。

我们分析最左边的,1.它匹配:f[i][j]=max(f[i][k]+f[k+1][j]),对于最后一个,若可以匹配+2,不可以就不加。

2.他不匹配:f[i][j]=max(f[i+1][j]);

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int dp[105][105];
string s;
int f(int i,int j){
	if(i>=j) return dp[i][j]=0;
	if(dp[i][j]!=-1) return dp[i][j];
	for(int k=i+1;k<=j-1;k++){
		if((s[i]=='('&&s[k]==')')||(s[i]=='['&&s[k]==']')) dp[i][j]=max(dp[i][j],f(i+1,k-1)+f(k+1,j)+2);
		else dp[i][j]=max(dp[i][j],f(i+1,k-1)+f(k+1,j));
	}
	dp[i][j]=max(dp[i][j],f(i+1,j));
	if((s[i]=='('&&s[j]==')')||(s[i]=='['&&s[j]==']')){
		dp[i][j]=max(dp[i][j],f(i+1,j-1)+2);
	}
	else dp[i][j]=max(dp[i][j],f(i+1,j-1));
	return dp[i][j];
}
int main(){
	while(cin>>s){
		if(s=="end") break;
		memset(dp,-1,sizeof(dp));
		cout<<f(0,s.size()-1)<<endl;
	}
}

接题:

法1,我们倒序求一串,相当于求他们的公共子序列。

法2.区间dp,f[i][j]表示ai,aj的最长回文子序列。

ai==aj f[i][j]=f[i+1][j-1]+2;

否则,f[i][j]=max(f[i+1][j],f[i][j-1])

下面是AC代码:

class Solution {
public:
    int longestPalindromeSubseq(string s) {
        int a[1050][1050];
        int n=s.length();
        for(int j=0;j<=n-1;j++){
            a[j][j]=1;
        }
        for(int j=1;j<=n-1;j++){
            for(int i=j-1;i>=0;i--){
                if(s[i]==s[j]) a[i][j]=a[i+1][j-1]+2;
                else a[i][j]=max(a[i+1][j],a[i][j-1]);
            }
        }
       return a[0][n-1];
    }
};

我们再思考一下:如果是要求连续的?

我们用bool数组f[i][j]表示i---j是否为回文

转移方程:if a[i]==a[j]&&f[i+1][j-1]==1回文,反之不回文

下面看一个具体应用:

我们先不考虑它成环,我们令dp[i][j]为i---j的合并的max,那么我们枚举最后一次合并的分界+i---j的和即可,转移方程为dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1])

我们再考虑成环,其实只是断开点的不同,换句话说,1234的情况变成了1234,2341,3412,4123,我们只要取max即可,为方便同时利用上一次的记入,我们直接for12341234即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,dp[402][402],dp1[402][402],a[402],sum[402];
int f(int i,int j){
    if(i==j) return dp[i][j]=0;
    if(dp[i][j]!=-1) return dp[i][j];
    for(int k=i;k<=j-1;k++){
        dp[i][j]=max(dp[i][j],f(i,k)+f(k+1,j)+sum[j]-sum[i-1]);
    }
    return dp[i][j];
}
int f1(int i,int j){
    if(i==j) return dp1[i][j]=0;
    if(dp1[i][j]!=-1) return dp1[i][j];
    dp1[i][j]=f(i+1,j)+sum[j]-sum[i-1];
    for(int k=i;k<=j-1;k++){
        dp1[i][j]=min(dp1[i][j],f1(i,k)+f1(k+1,j)+sum[j]-sum[i-1]);
    }
    return dp1[i][j];
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        sum[i]=sum[i-1]+a[i];
    }
    for(int i=n+1;i<=2*n;i++){
        a[i]=a[i-n];
        sum[i]=sum[i-1]+a[i];
    }
    memset(dp,-1,sizeof(dp));
    memset(dp1,-1,sizeof(dp1));
    int ans1=0,ans2=f1(1,n);
    for(int i=1;i<=n;i++){
        ans2=min(ans2,f1(i,i+n-1));
    }
    cout<<ans2<<endl;
    for(int i=1;i<=n;i++){
        ans1=max(ans1,f(i,i+n-1));
    }
    cout<<ans1<<endl;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Word Embedding+Keras进行自然语言处理NLP

目录 介绍&#xff1a; one-hot&#xff1a; pad_sequences: 建模: 介绍&#xff1a; Word Embedding是一种将单词表示为低维稠密向量的技术。它通过学习单词在文本中的上下文关系&#xff0c;将其映射到一个连续的向量空间中。在这个向量空间中&#xff0c;相似的单词在空间…

实现JNDI

实现JNDI 问题陈述 Smart Software Developer Ltd.想要开发一款Web应用程序,它使用servlt基于雇员ID显示雇员信息,雇员ID由用户通过HTML用户界面传递。雇员详细信息存储在Employee_Master表中。另外,Web应用程序应显示网站被访问的次数。 解决方案 要解决上述问题,需要执…

2024.2.6 模拟实现 RabbitMQ —— 数据库操作

目录 引言 选择数据库 环境配置 设计数据库表 实现流程 封装数据库操作 针对 DataBaseManager 单元测试 引言 硬盘保存分为两个部分 数据库&#xff1a;交换机&#xff08;Exchange&#xff09;、队列&#xff08;Queue&#xff09;、绑定&#xff08;Binding&#xff0…

腾讯云4核8G服务器够用吗?能支持多少人?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

webpack面试解析

参考&#xff1a; 上一篇webpack相关的系列&#xff1a;webpack深入学习&#xff0c;搭建和优化react项目 爪哇教育字节面试官解析webpack-路白 1、Webpack中的module是什么&#xff1f; 通常来讲&#xff0c;一个 module 模块就是指一个文件中导出的内容&#xff0c;webpack…

全国计算机等级考试二级,MySQL数据库考试大纲(2023年版)

基本要求&#xff1a; 1.掌握数据库的基本概念和方法。 2.熟练掌握MySQL的安装与配置。 3.熟练掌握MySQL平台下使用&#xff33;&#xff31;&#xff2c;语言实现数据库的交互操作。 4.熟练掌握 MySQL的数据库编程。 5.熟悉 PHP 应用开发语言&#xff0c;初步具备利用该语言进…

Vue-自定义属性和插槽(五)

目录 自定义指令 基本语法 (全局&局部注册) 指令的值 练习&#xff1a;v-loading 指令封装 总结&#xff1a; 插槽&#xff08;slot&#xff09; 默认插槽 插槽 - 后备内容&#xff08;默认值&#xff09; 具名插槽 具名插槽基本语法: 具名插槽简化语法: 作…

RocksDB:高性能键值存储引擎初探

在现代的分布式系统和大数据应用中&#xff0c;一个高效、可靠的存储引擎是不可或缺的。RocksDB&#xff0c;由Facebook于2012年开发并随后开源&#xff0c;正是为了满足这类需求而诞生的。它是一个持久化的键值存储系统&#xff0c;特别适合在闪存&#xff08;Flash&#xff0…

AtCoder Beginner Contest 340 C - Divide and Divide【打表推公式】

原题链接&#xff1a;https://atcoder.jp/contests/abc340/tasks/abc340_c Time Limit: 2 sec / Memory Limit: 1024 MB Score: 300 points 问题陈述 黑板上写着一个整数 N。 高桥将重复下面的一系列操作&#xff0c;直到所有不小于2的整数都从黑板上移除&#xff1a; 选择…

SCI论文作图规范

SCI论文作图规范包括以下几个方面&#xff1a; 一、图片格式 SCI论文通常接受的图片格式包括TIFF、EPS和PDF等。其中&#xff0c;TIFF格式是一种高质量的图像格式&#xff0c;适用于需要高分辨率和颜色准确性的图片&#xff1b;EPS格式是一种矢量图形格式&#xff0c;适用于需…

Leetcode 1035 不相交的线

题意理解&#xff1a; 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在&#xff0c;可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线&#xff0c;这些直线需要同时满足满足&#xff1a; nums1[i] nums2[j]且绘制的直线不与任何其他连线&#xff…

Spring 事务

Spring 事务传播&#xff08;Propagation&#xff09;特性 REQUIRED 支持一个当前的事务&#xff0c;如果不存在创建一个新的。SUPPORTS 支持一个当前事务&#xff0c;如果不存在以非事务执行。MANDATORY 支持一个当前事务&#xff0c;如果不存在任何抛出异常。REQUIRES_NEW 创…

百面嵌入式专栏(面试题)驱动开发面试题汇总 2.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍驱动开发面试题 。 1、Linux系统的组成部分? Linux内核、Linux文件系统、Linux shell、Linux应用程序。 2、Linux内核的组成部分? (1)第一种分类方式:内存管理子系统、进程管理子系统、文件管理子系…

react【六】 React-Router

文章目录 1、Router1.1 路由1.2 认识React-Router1.3 Link和NavLink1.4 Navigate1.5 Not Found页面配置1.6 路由的嵌套1.7 手动路由的跳转1.7.1 在函数式组件中使用hook1.7.2 在类组件中封装高阶组件 1.8 动态路由传递参数1.9 路由的配置文件以及懒加载 1、Router 1.1 路由 1.…

VC++ 绘制折线学习

win32 有三个绘制折线的函数&#xff1b; Polyline&#xff0c;根据给定点数组绘制折线&#xff1b; PolylineTo&#xff0c;除了绘制也更新当前位置&#xff1b; PolyPolyline&#xff0c;绘制多条折线&#xff0c;第一个参数是点数组&#xff0c;第二个参数是一个数组、指…

论文阅读-One for All : 动态多租户边缘云平台的统一工作负载预测

论文名称&#xff1a;One for All: Unified Workload Prediction for Dynamic Multi-tenant Edge Cloud Platforms 摘要 多租户边缘云平台中的工作负载预测对于高效的应用部署和资源供给至关重要。然而&#xff0c;在多租户边缘云平台中&#xff0c;异构的应用模式、可变的基…

HTTP的基本格式

HTTP的基本格式 .HTTPhttp的协议格式HTTPhttp的协议格式 . HTTP 应用层,一方面是需要自定义协议,一方面也会用到一些现成的协议. HTTP协议,就是最常用到的应用层协议. 使用浏览器,打开网站,使用手机app,加载数据,这些过程大概率都是HTTP来支持的 HTTP是一个超文本传输协议, 文…

家政小程序系统源码开发:引领智能生活新篇章

随着科技的飞速发展&#xff0c;小程序作为一种便捷的应用形态&#xff0c;已经深入到我们生活的方方面面。尤其在家庭服务领域&#xff0c;家政小程序的出现为人们带来了前所未有的便利。它不仅简化了家政服务的流程&#xff0c;提升了服务质量&#xff0c;还为家政服务行业注…

最新wordpress外贸主题

日用百货wordpress外贸主题 蓝色大气的wordpress外贸主题&#xff0c;适合做日用百货的外贸公司搭建跨境电商网站使用。 https://www.jianzhanpress.com/?p5248 添加剂wordpress外贸建站主题 橙色wordpress外贸建站主题&#xff0c;适合做食品添加剂或化工添加剂的外贸公司…

pm2启动的node项目访问不了,npm start却可以访问

netstat -ntlp输入该命令&#xff0c;查看启动的服务端口是否有被监听到&#xff0c;如3001&#xff0c;4000之类的&#xff0c;是node项目启动时候自己配的那个&#xff0c; 若没有&#xff0c;则执行 pm2 delete [app-id/app-name] 先删除启动的这个项目 例如pm2 delete my…
最新文章