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

萌新6:临场发挥(区间dp)

题目描述

小x和室友总共 nnn 人,组团去打一款游戏,总共有 nnn 台电脑供他们使用,一人一台,最开始,第 iii 个人使用第 iii 台电脑。

小x评估了每个人的能力值和临场发挥值。

第 iii 个人的能力值为 aia_iai​。

而他们的临场发挥值由能力值和他们所使用的电脑决定。

小x和他的室友喜欢换来换去。

他们惊奇的发现:如果第 iii 个人从第 xxx 台电脑换到了第 yyy 台电脑,那么第 iii 个人的临场发挥值会增加 ∣x−y∣∗ai|x-y|*a_i∣x−y∣∗ai​。

现在他们可以重新任意分配一次电脑。

小x想知道他们的临场发挥值最多会增加多少?

输入描述:

第一行一个整数 nnn (2≤n≤2000)(2 \leq n \leq 2000)(2≤n≤2000)。第二行 nnn 个整数 a1,a2,……,ana_1,a_2,……,a_na1​,a2​,……,an​ (1≤ai≤109)(1 \leq a_i \leq 10^9)(1≤ai​≤109)。

输出描述:

一个整数,表示 临场发挥值 最大增加的数量

示例1

输入

复制4 1 3 4 2

4
1 3 4 2

输出

复制20

20

说明

假设第 iii 个人的位置为 cic_ici​,从 [1,2,3,4][1,2,3,4][1,2,3,4] 更换为 [3,4,1,2][3,4,1,2][3,4,1,2],临场发挥值增加: 1×∣1−3∣+3×∣2−4∣+4×∣3−1∣+2×∣4−2∣=201 \times |1-3|+3 \times |2-4|+4 \times |3-1|+2 \times |4-2|=201×∣1−3∣+3×∣2−4∣+4×∣3−1∣+2×∣4−2∣=20

示例2

输入

复制6 8 6 9 1 2 1

6
8 6 9 1 2 1

输出

复制85

85

做法

首先要看出来一个贪心的小结论。就是就是能力值大的,应该放在两边,反之放中间。

#include<bits/stdc++.h>
#define int long long
using namespace std;int n;
pair<int,int> a[2010];
int dp[2010][2010];signed main(){scanf("%lld",&n);for(int i=1;i<=n;i++) {int b;scanf("%lld",&b);a[i]={b,i};}sort(a+1,a+1+n);for(int i=1;i<=n;i++){//枚举区间长度和每次取出的数int b=a[i].first,id=a[i].second;for(int l=1;l<=n-i+1;l++){//枚举每个长度i的区间,求最大值int r=l+i-1;dp[l][r]=max(dp[l][r-1]+abs(id-r)*b,dp[l+1][r]+abs(id-l)*b);//b放右边和左边}}cout<<dp[1][n];}

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

相关文章:

  • 《数字信号处理》学习04-离散时间系统中的线性时不变系统
  • ABAP 调试宏DEFINE
  • Golang | Leetcode Golang题解之第393题UTF-8编码验证
  • HarmonyOS开发实战( Beta5.0)DevEco Device Tool开发环境搭建实践
  • WIFI贴项目到底是不是“骗局”呢?由我来揭秘!
  • C++ string类—string修饰符、操作、非成员函数
  • PVN3D(一)代码框架
  • 「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究
  • GitHub Copilot的详细介绍
  • opencv之阈值处理
  • oracle startup失败,ORA-01078: failure in processing system parameters
  • 【python因果推断库7】使用 pymc 模型的工具变量建模 (IV)2
  • 【2024数模国赛赛题思路公开】国赛B题思路丨附可运行代码丨无偿自提
  • 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器)
  • 使用udp进行通信
  • C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作
  • java重点学习-redis
  • 每日刷题(图论)
  • Requestium - 将Requests和Selenium合并在一起的自动化测试工具
  • mysql和pg等数据库之间的数据迁移实战分享
  • 消息中间件都有哪些
  • 数据结构(3)内核链表
  • Linux 硬件学习 s3c2440 arm920t蜂鸣器
  • 提交保存,要做重复请求拦截,避免出现重复保存的问题
  • 华为 HCIP-Datacom H12-821 题库 (3)
  • spring-boot 事件
  • 合碳智能 × Milvus:探索化学合成新境界——逆合成路线设计
  • 二分查找 | 二分模板 | 二分题目解析
  • uni-app应用更新(Android端)
  • JavaEE(2):前后端项目之间的交互