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

篮球运动(动态规划)

题目描述

小明建造了一个篮球场,他请来了2行n列的人,想让他们进行比赛。每一个人都有一个能力值,第一行分别为h11,h12,…,h1n,第二行为h21,h22,…,h2n。现在小明可以选一些人组成一个最强团队。但是选人是有规则的,因为选一个人会让附近的人都很妒忌,所以他既不会同一行里连续选择2个人,也不会同一列里的连续选择2个人。
现在他希望所选团队的能力值的之和最大,但人太多了,所以他想请聪明的你帮他解决这个问题。解决在满足规则的情况下能力值的和最大为多少?

输入

第一行输入一个整数n(1≤n≤10^5),表示每行中的学生人数。
第二行输入n个整数h[1,1],h[1,2],…,h[1,n](1≤h[1,i]≤10^9),其中h[1,i]表示第一行中的第i个学生能力值。
第三行输入n个整数h[2,1],h[2,2],…,h[2,n](1≤h[2,i]≤10^9),其中h[2,i]表示第二行中的第i个学生能力值。

输出

输出一个整数,表示所选团队中能力值之和最大。 

样例输入
【样例1】
5 
9 3 5 7 3 
5 8 1 4 5
【样例2】
3 
1 2 9 
10 1 1
【样例3】
1 
7 
4 
样例输出
【样例1】
29
【样例2】
19
【样例3】
7
提示

样例1说明:小明可以选择以下团队:9,8,7,5. 
样例2说明:小明可以选择以下团队 

思路分析

动态规划

每一列都有三种选择。dp[j][i]表示在第j列做出第i种选择后的能力值和。

(0\leqslant j\leqslant n-1,0\leqslant i\leqslant 2)

option1:不选任何一个学生。

option2:选择能力值为h1的学生。

option3:选择能力值为h2的学生。

对于第0列(0-based indexing),dp[0][0]=0,dp[0][1]=h1[0],dp[0][2]=h2[0]。

对于第j列(j>0),dp[j][0]为dp[j-1][0],dp[j-1][1],dp[j-1][2]三数之中最大的值,
dp[j][1]=h1[j]+max(dp[j-1][2],dp[j-1][0]),
dp[j][2]=h2[j]+max(dp[j-1][1],dp[j-1][0])。

代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n;
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;vector<int>h1(n),h2(n);for(int i=0;i<n;i++){cin>>h1[i];}for(int i=0;i<n;i++){cin>>h2[i];}vector<vector<ll>>dp(n,vector<ll>(3,0));dp[0][0]=0;dp[0][1]=h1[0];dp[0][2]=h2[0];for(int i=1;i<n;i++){ll a=dp[i-1][0],b=dp[i-1][1],c=dp[i-1][2],ans;ans=max(a,b);ans=max(ans,c);dp[i][0]=ans;dp[i][1]=h1[i]+max(dp[i-1][2],dp[i-1][0]);dp[i][2]=h2[i]+max(dp[i-1][1],dp[i-1][0]);}ll res;res=max(dp[n-1][0],dp[n-1][1]);res=max(res,dp[n-1][2]);cout<<res;return 0;
}

http://www.lryc.cn/news/614993.html

相关文章:

  • Vue3子组件向父组件传值(defineEmits())
  • 年轻新标杆!东方心绣脸韧带年轻技术升级发布
  • 【线程池】压测确定线程池合适的参数
  • Qt/C++开发监控GB28181系统/实时监测设备在线离线/视频预览自动重连/重新点播取流/低延迟
  • 模板方法模式:优雅封装算法骨架
  • MX 播放器:安卓设备上的全能视频播放器
  • 浅谈 VM 桥接模式:让虚拟机像真实电脑一样接入网络
  • SimBA算法实现过程
  • day 36_2025-08-09
  • Gltf 模型 加载到 Cesium 的坐标轴映射浅谈
  • Mysql 分页查询优化
  • 使用lightGCN完整训练用户 + 商品向量的 3 步指南
  • jenkins-飞书通知机制
  • Windows系统NUL文件删除问题解决
  • 如何学习 react native 和 Expo
  • Spark02 - SparkContext介绍
  • Java基础-完成局域网内沟通软件的开发
  • 【和春笋一起学C++】(三十三)名称空间的其他特性
  • C++安全异常设计
  • 可泛化双手操作机器人基准测试:CVPR 2025 MEIS 研讨会 RoboTwin 双臂协作挑战赛
  • 【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
  • 第15届蓝桥杯Scratch选拔赛初级及中级(STEMA)2024年1月28日真题
  • Leetcode-19. 删除链表的倒数第 N 个结点
  • ORA-600 kcratr_nab_less_than_odr和ORA-600 4194故障处理---惜分飞
  • 莫比乌斯反演学习笔记
  • FFMPEG将H264转HEVC时,码率缩小多少好,以及如何通过SSIM(Structural Similarity Index结构相似性指数)衡量转码损失
  • PDF编辑工具,免费OCR识别表单
  • .htaccess 文件上传漏洞绕过总结
  • springBoot集成easyExcel 实现文件上传
  • linux安装php