题解 - Birds

题目

题目大意

一条直线上有 \(n\) 棵树,第 \(i\) 棵树上有 \(c_i\)​ 只鸟。

在第 \(i\) 棵树下召唤一只鸟的魔力代价是 \(cost_i\)​。每召唤一只鸟,魔力上限会增加 \(B\)。每向前走一棵树,会增加 \(X\) 的魔力。一开始的魔力和魔力上限都是 \(W\)。你只能向前移动。

问最多能够召唤几只鸟。

思路简析

还是先考虑状态:必然不能以魔力为状态,那么只能以树和鸟:\(f_{i, j}\) 代表在第 \(i\) 棵树时已召唤了 \(j\) 只鸟时能有的最大魔力值。

转移方程:

\[f_{i, j} = \max\limits_{0 \leq k \leq \min\{j, c_i\}}\{f_{i-1, j-k}+X-cost_i\times k\} \]

\(Range: i_{1\rightarrow n}, j_{0\rightarrow\sum\limits_{p=0}^i c_p}\)

这里的 \(k\) 表示在第 \(i\) 棵树下召唤了 \(k\) 只鸟;加上的 \(X\) 是从第 \(i-1\) 棵树走到第 \(i\) 棵树的魔力值;转入该方程应有条件:$f_{i-1, j-k}-cost_i\times k$(这里不加 \(X\) 是因为)。

边界条件是 \(f_{0, 0} = W\)

最终结果是 \(\max\limits_{f_{n, j}\ is\ existent}\{j\}\)

那么就比较简单了。

这真的是背包 dp 吗?

另外考虑你的魔力上限,显然是 \(W+B\times j\)

我是真服了,\(cst_i \times k\) 会爆 int,硬控我 4h+。

完了到最后好像是被盾了。

这东西虽然是三层循环,但是似乎时间复杂度仅是 \(\Omega(n\cdot\sum\limits_{i=1}^nc_i)\)\(10^7\) 的(若算错请指正谢谢。)。

点击查看代码
#include <bits/stdc++.h>
#include <bits/extc++.h>
namespace {
using namespace std;
using namespace __gnu_pbds;
#define fiin(x) freopen(x".in", "r", stdin)
#define fiout(x) freopen(x".out", "w", stdout)
#define files(x) fiin(x), fiout(x)
#define und unsigned
#define ll long long
#define db double
#define pii pair<int, int>
#define mp(x, y) make_pair(x, y)
#define m1p(x, y) ((x<<14)+y)
#define fir first
#define sec second
#define hap gp_hash_table
// #define pri_que 
const int man = 1e3+10, mac = 1e4+10;
}ll n, W, B, X;
ll c[man], cst[man], sum[man];
ll f[man][mac];
int main () {// files("test");scanf("%lld%lld%lld%lld", &n, &W, &B, &X);for (int i = 1; i <= n; ++ i) scanf("%lld", c+i), sum[i] = sum[i-1]+c[i];for (int i = 1; i <= n; ++ i) scanf("%lld", cst+i);memset(f, -1, sizeof(f)), f[0][0] = W;for (int i = 1; i <= n; ++ i) for (int j = 0; j <= sum[i]; ++ j) {for (int k = 0; k <= min(1LL*j, c[i]); ++ k) if (f[i-1][j-k]-cst[i]*k>=0) f[i][j] = max(f[i][j], f[i-1][j-k]+X-cst[i]*k);f[i][j] = min(f[i][j], W+B*j); }for (int i = sum[n]; i; -- i) if (f[n][i] != -1) return printf("%d", i)&0;return puts("0")&0;
}

点名批评可爱洛天依,写 \(\max\) 不写范围,中间变量还来回标错。

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

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

相关文章

压测流程

一、性能场景分析与创建压测场景业务峰值稳定性:大促业务等峰值业务稳定性考验 新系统上线:准确探知站点能力,防止系统一上线即被用户流量打垮 技术升级验证:大的技术架构升级后进行性能评估,验证新技术场景的站点性能状态 容量规划:对站点进行精细化的熔炼规划,为系统扩…

它终于发生了。2024年因人工智能倒闭的第一家美国上市企业!

一家美国公司在最近的财报发布后,股价从历史高点暴跌了99%,现在正走在倒闭的最后一段路上。 这家公司叫 Chegg,是一家美国的教育科技公司,主要提供一系列服务,帮助学生完成学业。疫情期间,它曾是备受关注的明星公司,三年前的市值一度高达 120 亿美元。 现在呢?它眼看就…

【RAG 项目实战 04】添加多轮对话能力

【RAG 项目实战 04】添加多轮对话能力 NLP Github 项目: NLP 项目实践:fast【RAG 项目实战 04】添加多轮对话能力NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常…

设计模式之PIMPL模式

PIMPL是指pointer to implementation,又称作“编译防火墙”,是一种减少代码依赖和编译时间的C++编程技巧,其基本思想是将一个外部可见类的实现细节(一般是通过私有的非虚成员)放在一个单独的实现类中,在可见类中通过一个私有指针来间接访问该类型。设计模式之PIMPL模式 P…

Mac开发_制作.dmg压缩镜像文件

创建一个文件夹打开终端进入此文件夹 cd /Users/gc/Desktop/GC_Codes/打包dmg专用/Ocer_1.0.0_202411231800 使用命令生成application替身,执行以下命令 ln -s /Applications/ Applications.app文件放入文件夹打开磁盘工具:新建映像->选择基于文件夹新建映像选择这个文件…

PTA第4~6次大作业分析及总结

一、前言 ​ 本次Blog为第四~六次PTA的总结,历时三周,主要考察我们对继承的掌握情况,通过完成这几次PTA,我对java的继承的使用有了了解,这三次大作业较之前的大作业难度进一步提升,尤其是第六次大作业,由于之前生病了,我没有投入几天的精力解决这次PTA,在最后一天没能及…

SolidWorks一键生成BOM到Excel里,并可选择带缩略图

此前提到有粉丝朋友分享给我的一个VBA宏程序,能根据Solidworks装配体的零件属性一键导出到Excel,并可选择是否需要缩略图,零件的属性可以自定义,是一个很好的程序。但是试用后,发现有一些问题,其中最大的问题,也是很多粉丝朋友提到的一个问题,无法选择只导出子装配体或…

java二阶段总结(电路模拟程序)

前言第四次题目集知识点:开始应用继承在大题目中,但对于方法重写,多态的要求未涉及继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。 继承是指在原有类的基础上,进行功能扩展,创建新的类型。方法重载:第一题s…

南昌航空大学-软件学院-22207112-卢翔-JAVAPTA(4-6)博客

前言 PTA第四次作业 设计与分析 题目分析 本题在答题判题程序3基础上新增了选择题和填空题内容,程序输入信息分五种, 输入格式: 1、题目信息格式:"#N:"+题目编号+" "+"#Q:"+题目内容+" "#A:"+标准答案 2、试卷信息格式:"…

js和CSS3自定义鼠标特效

在线预览 下载这是一款js和CSS3自定义鼠标特效。该特效中,使用一个DIV元素来自定义鼠标,通过CSS代码来构建鼠标的形状,并通过js代码来驱动鼠标的动画。使用方法HTML结构 基本的HTML结构如下。<!--鼠标形状元素--> <div id="cursorBlob"></div>…

ArcGIS填补面图层的细小空白并删除主体部分外的零散部分

本文介绍在ArcMap软件中,基于消除面部件(“Eliminate Polygon Part”)工具,对矢量面要素的零碎、空洞区域加以删除,同时将游离于要素主体之外的部分剔除的方法~本文介绍在ArcMap软件中,基于消除面部件(“Eliminate Polygon Part”)工具,对矢量面要素的零碎、空洞区域加…

JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具

JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具 Aqua, CLion, DataGrip, DataSpell, Fleet, GoLand, IntelliJ IDEA, PhpStorm, PyCharm, Rider, RubyMine, WebStorm 请访问原文链接:https://sysin.or…