CometOJ#6 双倍快乐(简单DP)

链接:https://www.cometoj.com/contest/48/problem/B

题意:给出一串数列,要求在这个数列中找出两条“不相交”的非下降子序列使得子序列之和最大。“不相交”即不存在任意的ai同时存在于两个子序列中。

分析:笔者刷题量不多,这道题对笔者加深动态规划求子序列的理解很有帮助;题目要求非下降子序列的最大和,这里我们要求的是两条子序列。做题时的第一想法是走两遍DP,先求出一条和最大的子序列,把这条子序列中的元素给剔除,接着再重复该步骤,得到另一条和最大的子序列,最后把两条子序列的和加起来。但是,这种做法是存在后效性的,我们的目的是要求得两条子序列的和最大,如果每次只是单纯的找和最大的子序列,那么很有可能在第一次选元素时就断了使得子序列总和最大的“桥梁”。好比方说:5 4 4 5 4;通过该方案得到的两条序列会是:“4 4 5”、“5”,最终结果是18。但最优的方案其实是:“4 4 4”、“5 5”,结果为22。

  设dp[i][j]为两条子序列的末端分别为i和j时的子序列和,dp[0][0] = 0;其状态转移方程可以由单个子序列的转移方程推广得到,详见代码部分。

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main() {
 6     int n;
 7     scanf("%d",&n);
 8 
 9     int num[n+1];
10     num[0] = 0;
11     for (int i=1;i<=n;i++) {
12         scanf("%d",&num[i]);
13     }
14 
15     int dp[n+1][n+1];
16     memset(dp,0,sizeof(dp));
17     int ans = 0;
18     for (int i=1;i<=n;i++) {
19         for (int j=0;j<i;j++) {
20             if (num[i] >= num[j]) {
21                 for (int k=0;k<i;k++) {
22                     dp[i][k] = max(dp[i][k],dp[j][k] + num[i]);
23                     dp[k][i] = max(dp[k][i],dp[k][j] + num[i]);
24                     ans = max(ans,max(dp[i][k],dp[k][i]));
25                 }
26             }
27         }
28     }
29     printf("%d\n",ans);
30     return 0;
31 }

 

转载于:https://www.cnblogs.com/doublebit/p/11105845.html

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

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

相关文章

iOS开发-证书问题精析~

在iOS开发过程中&#xff0c;不可避免的要和证书打交道&#xff0c;真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们会遇到很多的问题&#xff0c;但是如果掌握了真机调试的原理和本质&#xff1b;遇到问题&#xff0c;我们就更容易定位问题之所在&#xf…

selenium+Java自动化

转载于:https://www.cnblogs.com/arvin-feng/p/11110483.html

html 5 本地数据库(Web Sql Database)

基于HTML5的Web DataBase 可以让你在浏览器中进行数据持久地存储管理和有效查询&#xff0c;假设你的离线应用程序有需要规范化的存储功能 本文讲述如何使用核心方法openDatabase、transaction、executeSql 1.新建一个网页&#xff0c;比如&#xff1a;test.html 内容如下&am…

前端学习资料及路线名称网站

IT前端学习资料及路线常用PC端UI组件库饿了么(Element-UI)https://element.eleme.cn/#/zh-CN常用小程序端UI组件库uView UIhttp://v1.uviewui.com/名称网站JQuery文件网https://code.jquery.com/jquery/jQuery手册&#xff08;pc端&#xff09;http://jquery.cuishifeng.cn/jQu…

JS实现生成一个周对应日期数组

/* 获取日期和周 */getDateWeek() {/* 得到当前日期的时间戳 */const timestamp Date.now()// const timestamp new Date(2019, 7, 30, 0, 0, 0, 0).getTime()const dateWeek Array.from(new Array(7)).map((_, i) > {/* 得到当前周每一天的时间戳 */const weekTimestamp…

npm升级package.json依赖包

使用npm管理node的包&#xff0c;可以使用npm update <name>对单个包升级&#xff0c;对于npm的版本大于 2.6.1,可以使用命令: npm install -g 升级全局的本地包。 对于版本小于2.6.1的一个一个包的升级实在是太麻烦&#xff0c;就想找到一个升级所有本地包的方法&#x…

Sublime Text 3 快捷键汇总

Sublime Text 3非常实用&#xff0c;但是想要用好&#xff0c;老是忘记&#xff0c;汇总一下&#xff0c;方便自己方便别人。 用惯了vim&#xff0c;有些快捷键也懒得用了&#xff0c;尤其是在win下面&#xff0c;还有图形界面&#xff0c;所以个人觉得最有用的还是搜索类&…

Minimal coverage (贪心,最小覆盖)

题目大意&#xff1a;先确定一个M&#xff0c; 然后输入多组线段的左端和右端的端点坐标&#xff0c;然后让你求出来在所给的线段中能够 把[0, M] 区域完全覆盖完的最少需要的线段数&#xff0c;并输出这些线段的左右端点坐标。 思路分析&#xff1a; 线段区间的起点是0&#x…

vuex知识点

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式&#xff1b;集中存储和管理应用的所有组件状态。 状态&#xff1a;什么是状态&#xff0c;我们可以通俗的理解为数据。Vue只关心视图层&#xff0c;那么视图的状态如何来确定&#xff1f;我们知道是通过数据驱动&#xff0c…

Kafka2.0生产者客户端使用

1 初始化配置 Kafka 通过 KafkaProducer 构造器初始化生产者客户端的配置。   常用的重要配置&#xff0c;详见官网。 bootstrap.servers&#xff1a;Kafka 集群地址&#xff08;host1:post,host2:post&#xff09;&#xff0c;Kafka 客户端初始化时会自动发现地址&#xff0…

vuex小例

少废话&#xff0c;先出东西 vuex main.js import Vue from vue import App from ./App import router from ./router import store from ./store Vue.config.productionTip falsenew Vue({el: #app,router,store,render: xx>xx(App) })store.js 平级目录未建文件夹import…

[论文笔记]CVPR2017_Joint Detection and Identification Feature Learning for Person Search

Title: Joint Detection and Identification Feature Learning for Person Search; aXiv上该论文的第一个版本题目是 End-to-End Deep Learning for Person SearchAuthors: Tong Xiao1* ; Shuang Li1* ; Bochao Wang2 ; Liang Lin2; Xiaogang Wang1 Affilations: 1.The Chines…

php下的原生ajax请求

浏览器中为我们提供了一个JS对象XMLHttpRequet&#xff0c;它可以帮助我们发送HTTP请求&#xff0c;并接受服务端的响应。 意味着我们的浏览器不提交&#xff0c;通过JS就可以请求服务器。ajax(Asynchronous Javascript And XML)其实就是通过XHR对象&#xff0c;执行HTTP请求。…

HBase性能优化总结

HBase性能优化方法总结&#xff08;一&#xff09;&#xff1a;表的设计 1. 表的设计 1.1 Pre-Creating Regions 默认情况下&#xff0c;在创建HBase表的时候会自动创建一个region分区&#xff0c;当导入数据的时候&#xff0c;所有的HBase客户端都向这一个region写数据&#x…

.NetCore如何使用ImageSharp进行图片的生成

ImageSharp是对NetCore平台扩展的一个图像处理方案&#xff0c;以往网上的案例多以生成文字及画出简单图形、验证码等方式进行探讨和实践。 今天我分享一下所在公司项目的实际应用案例&#xff0c;导出微信二维码图片&#xff0c;圆形头像等等。 一、源码获取 Git项目地址&…

vue2工程

vue当然可以使用script标签引入&#xff0c;不需任何依赖即可按照vue的语法进行使用。但中大型商用项目中&#xff0c;还是建议使用工程化方式使用vue&#xff0c;vue提供了官方脚手架vue-cli&#xff0c;可以快速构建vue项目&#xff0c;脚手架会帮助开发者创建好建议的工程目…

flutte的第一个hello world程序

用命令行创建项目&#xff1a; flutter create flutterdemo VSCode或者AS连接手机后 输入 flutter run 编译后就可以将默认的代码显示在手机上了 开始写hello world 代码&#xff0c;这段代码写在根目录\lib\main.dart文件中&#xff0c;也是Flutter主文件。 整个代码如下 impo…

Ajax 设置Access-Control-Allow-Origin实现跨域访问

之前遇到的问题整理 ajax跨域访问是一个老问题了&#xff0c;解决方法很多&#xff0c;比较常用的是JSONP方法&#xff0c;JSONP方法是一种非官方方法&#xff0c;而且这种方法只支持GET方式&#xff0c;不如POST方式安全。 即使使用jquery的jsonp方法&#xff0c;type设为POST…

vue工程webpack模板配置说明

vue工程webpack模板下的配置文件非常多&#xff0c;只能在实际开发过程中反复熟悉&#xff0c;才能渐渐体会官方将配置文件拆分细化的合理性。 主要配置文件中代码的作用从网上摘录了比较全的一份注释&#xff0c;做下记录。 dev-server.js 开发服务端配置 require(./check-v…

目录的拼接

找到被拼接文件所在的目录&#xff0c;然后进行拼接 import os 获取当前目录&#xff1a; os.path.dirname(__file__) 如下&#xff0c;被拼接文件所在目录与当前目录的上级目录在同一文件夹下&#xff1a; os.path.join(os.path.dirname(os.path.dirname(__file__)),‘文件夹路…