小奇探险

文章目录

  • 题目
  • 题解
  • 代码实现

在这里插入图片描述

题目

小奇去遗迹探险,遗迹里有N个宝箱,有的装满了珠宝,有的装着废品。
小奇有地图,所以它知道每一个宝箱的价值,但是它不喜欢走回头路,所以要按顺序拿这N个宝箱中的若干个。

拿宝箱很累的。一开始小奇的体力是1 ,每得到一个宝箱之后,小奇得到的价值是体力x 宝箱的价值,之后它的体力就会变为原来的K倍 。

小奇不喜欢连续放过很多宝箱,所以任意一段长度为M的序列中,小奇一定要取走其中的一个宝箱。

现在小奇想知道它能得到的最大价值和。

输入格式
第一行,两个整数 N,M,表示的含义如题目中所述;
第二行,一个小数K ,表示的含义如题目中所述,最多4位小数;
第三行,N个整数,第i个整数表示第i个宝箱的价值。

输出格式
输出一行,一个实数,表示小奇能得到的最大价值和,四舍五入保留两位小数。

在这里插入图片描述

题解

特别水也特别板的一道题。。。。
每个人都会想到三维DP
DP[i][j][k]DP[i][j][k]DP[i][j][k]:表示第i个宝箱一定选,上一次选的宝箱为j,选了k个
在这里插入图片描述
通过数据范围,就已经扼杀了想开三维数组的心


那我就先舍弃k,假设没有这个k的限制来思考一下
因为开二维都会MLE,所以就死命也要把DP压成一维
DP[i]DP[i]DP[i]:表示第i个宝箱一定选,前面[1,i−1][1,i-1][1,i1]不管怎么选,反正要是合法的最大价值
转移方程式?
DP[i]=DP[j]+w[i](j∈[i−m,i−1])DP[i]=DP[j]+w[i](j∈[i-m,i-1])DP[i]=DP[j]+w[i](j[im,i1])
这就是一个滑动窗口的优化(单调队列)我要AC了!!!
在这里插入图片描述


但是因为有了k的限制,我们就要重新搞一下了
我们思考如果正着往后推,那么前面选了j个就会影响后面的价值
但是如果从后往前推,后面管他选了x个,对当前i的价值是没有影响的,
当前i的价值只被前面的选取决定
在这里插入图片描述
所以重新定义一下DP[i]DP[i]DP[i]
表示从n往1推,第i个宝箱必须选,且[i+1,j][i+1,j][i+1,j]的选取必须是合法的最大价值
转移方程式也就变了?
DP[i]=DP[j]+w[i](j∈[i+1,min(n+1,i+m)])DP[i]=DP[j]+w[i](j∈[i+1,min(n+1,i+m)])DP[i]=DP[j]+w[i](j[i+1,min(n+1,i+m)])
在这里插入图片描述


这里我只解释两个地方:
1:为什么要压一个n+1??
因为数据有可能在最后的[n,n−m+1)[n,n-m+1)[n,nm+1)全是负数,
而这个时候i距离n的距离又不到m
我就可以不选,这个时候就可以用DP[n+1]=0DP[n+1]=0DP[n+1]=0来处理

2:为什么可以取到i+m??
按我们的常规理解应该是[i+m−1,i][i+m-1,i][i+m1,i]
仔细想想,i是一定要取的,那么[i+m−1,i][i+m-1,i][i+m1,i]这个区间肯定是满足m的
但是[i+m,i−1][i+m,i-1][i+m,i1]也是可以满足m的,所以i+m也可能对i进行贡献

举例说明:
m = 2,i = 1,i + m = 3
1 2 3

i
[1,2]长度是m,其中有下标为1的宝藏被拿了
[2,3]长度也是m,所以下标为3的宝藏也应该被拿

代码实现

#include <cstdio>
#include <deque>
using namespace std;
#define MAXN 100005
deque < int > deq;
int n, m;
double k, result = -0x7f7f7f7f;
double w[MAXN], dp[MAXN];int main() {scanf ( "%d %d %lf", &n, &m, &k );for ( int i = 1;i <= n;i ++ )scanf ( "%lf", &w[i] );deq.push_back ( n + 1 );for ( int i = n;i >= 1;i -- ) {while ( ! deq.empty() && deq.front() > i + m )deq.pop_front();dp[i] = dp[deq.front()] * k + w[i];while ( ! deq.empty() && dp[deq.back()] <= dp[i] )deq.pop_back();deq.push_back ( i );}for ( int i = 1;i <= m;i ++ )result = max ( result, dp[i] );printf ( "%.2lf", result );return 0;
}

在这里插入图片描述

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

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

相关文章

基于Asp.Net Core打造轻量级内部服务治理RPC(二 远程服务设计)

紧接上一篇《基于Asp.Net Core打造轻量级内部服务治理RPC(一)》文章。本文主要讲解基于Asp.Net Core的远程服务设计和实现。在上一篇中讲过,服务提供者提供的服务实际上就是一个Controller&#xff0c;那么是否在该程序中&#xff0c;服务都按照Asp.Net Core 中的Web Api的方式…

[NOIP 2009 提高组]最优贸易

勤劳的一更题目题解代码实现题目 C国有 n个大城市和 m 条道路&#xff0c;每条道路连接这n个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路&#xff0c;一部分为双向通行的道路&#xff0c;双向通行的道路在统计条数…

Azure Service Fabric Mesh:一个构建任务关键型微服务的平台

本文要点Azure Service Fabric Mesh&#xff08;目前处于预览阶段&#xff09;是一个完全托管的服务&#xff0c;它使你可以使用“无服务器”方法构建、部署和管理由运行在容器中的多语言服务组成的应用程序。Azure Service Fabric Mesh 通过使用 Envoy Proxy 构建的软件定义网…

P3265 [JLOI2015]装备购买

题目描述&#xff1a; 给N个整数向量&#xff0c;每个向量带权值&#xff0c;求权值和最小的线性基 题解&#xff1a; 按权值v从小->大排序&#xff0c;依次插入线性基。整数线性基的思想类似&#xff0c;只是此时“消去”不能直接xor完成&#xff0c;需要类似高斯消元一样…

Surging1.0发布在即,.NET开发者们,你们还在等什么?

开源&#xff0c;是近三十年来互联网经久不衰的话题。它不仅仅是一种技术分享的形态&#xff0c;更是一种开放&#xff0c;包容&#xff0c;互利共赢的互联网精神。 不到30年前&#xff0c;大神林纳德托瓦兹&#xff0c;在赫尔辛基大学实验室里&#xff0c;开发出了第一个版本的…

[SDOI2016]排列计数 (错排数概念 + 递推公式【附带证明】)

辛勤二更题目题解错排数概念错排数递推公式及其证明代码实现这种题做的时候&#xff1a; 做完后&#xff1a;正常这就是生活&#xff0c;我们要学会习惯 题目 求有多少种长度为 n 的序列 A&#xff0c;满足以下条件&#xff1a; 1 ~ n 这 n 个数在序列中各出现了一次 若第 i …

失配树(border树)

4和6没有border关系 举例子&#xff1a; 当i 3时&#xff0c;j fa[i-1] fa[2] 0 s[j1] s[1] a s[3] 所以把i 3点的父亲设为j1 1 P5829 [模板]失配树

魔方俱乐部

爆肝感动三更题目思路90分代码&#xff08;MLE&#xff09;题解代码实现题目 fateice 来到了魔方俱乐部旅行。 魔方俱乐部有N个分部&#xff0c;每个分部均有且仅有一个虫洞&#xff0c;但是这虫洞只能通往一个分部。 每个分部有一个 orzFang 价值&#xff0c;第i个分部的 or…

模板:最大匹配

文章目录前言代码前言 匈牙利算法 可以解决的问题&#xff1a; &#xff08;原谅我的偷懒&#xff09; &#xff08;原谅我的水文&#xff09; 代码 #include<bits/stdc.h> using namespace std; #define ll long long const int N3e5100; const int mod1e97; int n,…

Stack Overflow 监控系统内部架构初探

Stack Exchange 架构主管 Nick Craver 在最近的一篇文章中介绍了他们的监控系统。他在文章中讨论了监控策略背后的理念和动机&#xff0c;并介绍了他们的工具集——主要是 Bosun、Grafana 和 Opserver。Stack Overflow 及其姐妹站点 Stack Exchange 运行在.NET 和 MS SQL Serve…

P5829 【模板】失配树

P5829 【模板】失配树 题目&#xff1a; 题解&#xff1a; 参考题解 我们先想一个问题&#xff1a;如何求出一个字符串的所有border&#xff1f; 如果一个字符串既是 S的前缀又是 S 的后缀&#xff0c;那么我们把 SS 自己平移一下就可以前后重合&#xff0c;然后我们就可以继…

[JLOI2015]战争调度

文章目录题目题解代码实现题目 脸哥最近来到了一个神奇的王国&#xff0c;王国里的公民每个公民有两个下属或者没有下属&#xff0c;这种关系刚好组成一个 n 层的完全二叉树。 公民 i 的下属是 2 * i 和 2 * i 1。最下层的公民即叶子节点的公民是平民&#xff0c; 平民没有下…

使用PerfView监测.NET程序性能(一):Event Trace for Windows

前言&#xff1a;在日常项目开发中&#xff0c;我们时不时会遇到程序占用了很高CPU的情况&#xff0c;可能是程序里某些未经优化的代码或者Bug&#xff0c;或者是程序运行压力太大。无论是什么原因&#xff0c;我们总希望能看到到底是哪个方法占用了如此高的CPU。微软为我们提供…

【用学校抄作业带你走进可持久化线段树(主席树)】可持久化线段树概念+全套模板+例题入门:[福利]可持久化线段树)

我似乎很少写这种算法博客可持久化线段树概念概念介绍&#xff08;类比帮助理解&#xff09;简单分析一下时间和空间复杂度&#xff08;内容池&#xff09;模板结构体变量建树模板单点修改模板单点查询模板区间修改模板&#xff08;pushup&#xff09;区间修改模板&#xff08;…

P3258 [JLOI2014]松鼠的新家

文章目录题意&#xff1a;题解&#xff1a;树上差分代码&#xff1a;树链剖分代码&#xff1a;P3258 [JLOI2014]松鼠的新家题意&#xff1a; n个点&#xff0c;n-1条边&#xff0c;给出每个点的拜访顺序&#xff0c;问每个点经过几次&#xff08;最后一次移动不算拜访&#xf…

[SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]

DP专练博客 DP专练T1&#xff1a;最大子矩阵题目题解代码实现T2&#xff1a;守卫题目题解代码实现T3&#xff1a;手机号码题目题解代码实现T1&#xff1a;最大子矩阵 题目 这里有一个n*m的矩阵&#xff0c;请你选出其中k个子矩阵&#xff0c;使得这个k个子矩阵分值之和最大。…

IdentityServer4-EF动态配置Client和对Claims授权(二)

本节介绍Client的ClientCredentials客户端模式&#xff0c;先看下画的草图&#xff1a;一、在Server上添加动态新增Client的API 接口。为了方便测试&#xff0c;在Server服务端中先添加swagger&#xff0c;添加流程可参考&#xff1a;https://www.cnblogs.com/suxinlcq/p/67575…

P3178 [HAOI2015]树上操作

P3178 [HAOI2015]树上操作 题意&#xff1a; 题解&#xff1a; 这已经是很裸的树链剖分了。。。 直接套模板 代码&#xff1a; #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespac…

dotnet core开源博客系统XBlog介绍

XBlog是dotnet core平台下的个人博客开源系统&#xff0c;它只需要通过Copy的方式即可以部署到Linux和windows系统中&#xff1b;如果你有安全证书那只需要简单配置一下即可提供安全的Https服务。接下来主要介绍XBlog功能、部署和基础设置。技术要点基于dotnet core平台&#x…

【莫队/树上莫队/回滚莫队】原理详解及例题:小B的询问(普通莫队),Count on a tree II(树上莫队),kangaroos(回滚莫队)

文章目录问题引入介绍莫队算法及其实现过程时间复杂度莫队算法适用范围莫队奇偶优化普通莫队&#xff1a;小B的询问树上莫队&#xff1a;SP10707 COT2 - Count on a tree II回滚莫队&#xff1a;[PA2011]Kangaroosupd&#xff1a;2021-08-11&#xff1a;重新对博客进行了外观美…