[补题记录] Atcoder Beginner Contest 322(E)
URL:https://atcoder.jp/contests/abc322

目录
E
Probelm/题意
Thought/思路
Code/代码
E
Probelm/题意
有 N 个改进计划,每个计划可以执行一次;有 K 个参数,每个计划可以将所有参数提升固定值,即计划 i 可以为第 j 个参数提升 Aij 的数值。每个计划有花费 Ci,问最少多少花费,能让所有参数都 >= P。
其中 1 <= K, P <= 5;1 <= N <= 100。
Thought/思路
假如只有一个参数,我们很容易想到这是一个 dp。比如:
dp[i][A1] = min(dp[i][A1], dp[i - 1][0 + A1])
dp[i][x] = min(dp[i][x], dp[i - 1][x - A1])
但是现在有 K 个参数,也就是说,我们无法确定 dp 数组的维度。
考虑 K = 5 的情况,就会有 dp[i][A1][A2][A3][A4][A5];再考虑一个参数时,我们是如何得到答案的,显然是通过维护 dp[i][0] ~ dp[i][P] 的最小值来的得到答案 dp[n][P]。
那么我们就可以这样做,将参数 [A1][A2][A3] 视作一系列 P + 1 进制的数(因为需要到达 P),如:[0][0][0] ~ [5][5][5] 就是一系列 3 位的 6 进制数。
这样,就可以将不确定的维度,转换为一维的:dp[i][0 ~ pow(P + 1, K) - 1]。
当我们在状态转移的时候,就可以将十进制的整数,转换为 K 进制数组,对应每个计划的 Aij,算出需要维护的 dp 下一个状态。
Code/代码
#include "bits/stdc++.h"#define int long longconst int inf = 1e15;int n, k, p, dp[107][8003];std::vector <int> tenToK(int x, int k, int bit) { // k 进制std::vector <int> res(bit);for (int i = 0; i < bit; ++ i) {res[i] = x % k;x /= k;}std::reverse(res.begin(), res.end());return res;
}int kToTen(std::vector <int> x, int k, int bit) {int res = 0;for (int i = 0; i < bit; ++ i) {res = res * k + x[i];}return res;
}signed main() {std::cin >> n >> k >> p;int size = (int)std::pow(p + 1, k);for (int i = 0; i <= n; ++ i) {for (int j = 0; j < size; ++ j) {dp[i][j] = inf;}}dp[0][0] = 0;for (int i = 1; i <= n; ++ i) {int c; std::cin >> c;std::vector <int> a(k);for (int j = 0; j < k; ++ j) {std::cin >> a[j];}for (int j = 0; j < size; ++ j) dp[i][j] = dp[i - 1][j]; // 不选 i 的情况for (int j = 0; j < size; ++ j) {std::vector <int> now = tenToK(j, p + 1, k);for (int l = 0; l < k; ++ l) now[l] = std::min(p, now[l] + a[l]);int next = kToTen(now, p + 1, k);dp[i][next] = std::min(dp[i][next], dp[i - 1][j] + c);}}std::cout << (dp[n][size - 1] == inf ? -1 : dp[n][size - 1]);
}相关文章:
[补题记录] Atcoder Beginner Contest 322(E)
URL:https://atcoder.jp/contests/abc322 目录 E Probelm/题意 Thought/思路 Code/代码 E Probelm/题意 有 N 个改进计划,每个计划可以执行一次;有 K 个参数,每个计划可以将所有参数提升固定值,即计划 i 可以为第…...
目标检测算法改进系列之Backbone替换为FocalNet
FocalNet 近些年,Transformers在自然语言处理、图像分类、目标检测和图像分割上均取得了较大的成功,归根结底是自注意力(SA :self-attention)起到了关键性的作用,因此能够支持输入信息的全局交互。但是由于…...
buuctf-[BSidesCF 2020]Had a bad day 文件包含
打开环境 就两个按钮,随便按按 url变了 还有 像文件包含,使用php伪协议读取一下,但是发现报错,而且有两个.php,可能是自己会加上php后缀 所以把后缀去掉 /index.php?categoryphp://filter/convert.base64-encode/resourcei…...
Elasticsearch:什么时候应该考虑在 Elasticsearch 中添加协调节点?
仅协调节点(coordinating only nodes)充当智能负载均衡器。 仅协调节点的这种特殊角色通过减轻数据和主节点的协调责任,为广泛的集群提供了优势。 加入集群后,这些节点与任何其他节点类似,都会获取完整的集群状态&…...
Dubbo3应用开发—Dubbo注册中心引言
Dubbo注册中心引言 什么是Dubbo注册中心 Dubbo的注册中心,是Dubbo服务治理的⼀个重要的概念,他主要用于 RPC服务集群实例的管理。 注册中心的运行流程 使用注册中心的好处 可以有效的管理RPC集群的健康情况,动态的上线或者下线服务。让我…...
AS环境,版本问题,android开发布局知识
项目模式下有一个build.gradle,每个模块也有自己的build.gradle Android模式下有多个build.gradle,汇总在一起。(都会有标注是哪个模块下的) C:\Users\Administrator\AndroidStudioProjects 项目默认位置 Java web项目与android项目的区别…...
OpenCV查找和绘制轮廓:findContours和drawContours
1 任务描述: 绘制图中粗线矩形的2个边界,并找到其边界的中心线 图1 原始图像 2.函数原型 findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, …...
毕设-原创医疗预约挂号平台分享
医疗预约挂号平台 不是尚医通项目,先看项目质量(有源码论文) 项目链接:医疗预约挂号平台git地址 演示视频:医疗预约挂号平台 功能结构图 登录注册模块:该模块具体分为登录和注册两个功能,这些…...
PLL锁相环倍频原理
晶振8MHz,但是处理器输入可以达到72MHz,是因为PLL锁相环提供了72MHz。 锁相环由PD(鉴相器)、LP(滤波器)、VCO(压控振荡器)组成。 处理器获得的72MHz并非晶振提供,而是锁…...
POJ 2886 Who Gets the Most Candies? 树状数组+二分
一、题目大意 我们有N个孩子,每个人带着一张卡片,一起顺时针围成一个圈来玩游戏,第一回合时,第k个孩子被淘汰,然后他说出他卡片上的数字A,如果A是一个正数,那么下一个回合他左边的第A个孩子被淘…...
阿里云服务器镜像系统Anolis OS龙蜥详细介绍
阿里云服务器Anolis OS镜像系统由龙蜥OpenAnolis社区推出,Anolis OS是CentOS 8 100%兼容替代版本,Anolis OS是完全开源、中立、开放的Linux发行版,具备企业级的稳定性、高性能、安全性和可靠性。目前阿里云服务器ECS可选的Anolis OS镜像系统版…...
数学建模Matlab之基础操作
作者由于后续课程也要学习Matlab,并且之前也进行了一些数学建模的练习(虽然是论文手),所以花了几天零碎时间学习Matlab的基础操作,特此整理。 基本运算 a55 %加法,同理减法 b2^3 %立方 c5*2 %乘法 x 1; …...
[计算机入门] Windows附件程序介绍(工具类)
3.14 Windows附件程序介绍(工具类) 3.14.1 计算器 Windows系统中的计算器是一个内置的应用程序,提供了基本的数学计算功能。它被设计为一个方便、易于使用的工具,可以满足用户日常生活和工作中的基本计算需求。 以下是计算器程序的主要功能:…...
队列(循环数组队列,用队列实现栈,用栈实现队列)
基础知识 队列(Queue):先进先出的数据结果,底层由双向链表实现 入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为对头 常用方法 boolean offer(E e) 入队 E(弹出元素的类型) poll() 出队 peek() 获取队头 int size 获取队列元素个数 boolean isEmpty(…...
卷积神经网络-池化层和激活层
2.池化层 根据特征图上的局部统计信息进行下采样,在保留有用信息的同时减少特征图的大小。和卷积层不同的是,池化层不包含需要学习的参数。最大池化(max-pooling)在一个局部区域选最大值作为输出,而平均池化(average pooling)计算一个局部区…...
API基础————包
什么是包,package实际上就是一个文件夹,便于程序员更好的管理维护自己的代码。它可以使得一个项目结构更加清晰明了。 Java也有20年历史了,这么多年有这么多程序员写了无数行代码,其中有大量重复的,为了更加便捷省时地…...
【C++】一文带你走入vector
文章目录 一、vector的介绍二、vector的常用接口说明2.1 vector的使用2.2 vector iterator的使用2.3 vector空间增长问题2.4 vector 增删查改 三、总结 ヾ(๑╹◡╹)ノ" 人总要为过去的懒惰而付出代价ヾ(๑╹◡╹)ノ" 一、vector的介绍 vector…...
《Secure Analytics-Federated Learning and Secure Aggregation》论文阅读
背景 机器学习模型对数据的分析具有很大的优势,很多敏感数据分布在用户各自的终端。若大规模收集用户的敏感数据具有泄露的风险。 对于安全分析的一般背景就是认为有n方有敏感数据,并且不愿意分享他们的数据,但可以分享聚合计算后的结果。 联…...
十三、Django之添加用户(原始方法实现)
修改urls.py path("user/add/", views.user_add),添加user_add.html {% extends layout.html %} {% block content %}<div class"container"><div class"panel panel-default"><div class"panel-heading"><h3 c…...
Elasticsearch数据操作原理
Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎,设计用于云计算环境中,能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性,可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…...
Void编辑器:轻量级插件化架构与LSP/Tree-sitter深度集成解析
1. 项目概述:一个为“创造者”而生的现代编辑器最近在开发者社区里,一个名为“Void”的编辑器项目引起了我的注意。它不像那些我们耳熟能详的庞然大物,比如 VS Code 或 Sublime Text,一上来就带着庞大的生态和复杂的功能。Void 给…...
从LTV-M501到系统集成:高速光耦隔离通信的选型与实战设计
1. 高速光耦隔离通信的核心价值 第一次接触工业现场总线改造项目时,我被电机控制器和PLC之间的通信干扰问题折磨了整整两周。直到老工程师递给我几个LTV-M501光耦,问题才迎刃而解。这种通过光信号传递电信号的器件,就像给通信线路装上了"…...
蓝牙技术与FPGA实现:原理、优化与实践
1. 蓝牙技术基础与核心原理蓝牙技术自1994年由爱立信首次提出以来,已成为短距离无线通信领域的事实标准。这项技术之所以能在众多无线方案中脱颖而出,关键在于其独特的物理层设计和灵活的协议架构。1.1 2.4GHz ISM频段特性蓝牙工作在2.4GHz工业、科学和医…...
高精度电压基准技术:LT6657的创新与应用
1. 高精度电压基准的技术演进与系统需求在精密数据采集系统的设计中,电压基准如同整个系统的"心脏",其稳定性直接决定了测量结果的可靠性。过去二十年里,我参与过数十个工业测量项目,深刻体会到基准源选择对系统性能的致…...
基于储能系统参与电网一次调频的下垂控制仿真示例
目录 手把手教你学Simulink——基于储能系统参与电网一次调频的下垂控制仿真示例 一、 引言:当“新能源浪潮”遇见“频率崩塌”——储能如何化身电网的“速效救心丸”? 二、 问题本质:一次调频的“核心挑战”与“协同逻辑” 1. 核心挑战 …...
深度相机绿篱三维重建与修剪轨迹控制方法【附程序】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅如需沟通交流,点击《获取方式》 (1)紧耦合视觉-惯性-深度里程计与法线引导的稠密重建&am…...
AI原生代码审查实战手册(2026奇点大会闭门报告首次解禁)
更多请点击: https://intelliparadigm.com 第一章:AI原生代码审查:2026奇点智能技术大会Code Review新范式 在2026奇点智能技术大会上,AI原生代码审查(AI-Native Code Review)正式取代传统人工规则引擎混合…...
DBeaver驱动管理进阶:从手动维护到自动化脚本的优雅实践
DBeaver驱动管理进阶:从手动维护到自动化脚本的优雅实践 在数据库开发领域,DBeaver凭借其强大的跨数据库支持和开源特性,已成为众多开发者的首选工具。然而,随着团队规模扩大和项目复杂度提升,驱动管理这一看似简单的任…...
RPGMZ 万能通用钩子代码 插入自己的代码逻辑
const prevUpdate SceneManager._scene.update; SceneManager._scene.update function() {prevUpdate.call(this); // 保留原版// 你的任意代码SceneManager._scene.update prevUpdate; // 用完归还 };例子1 消息框对话 如何插入自己的对话内容const prevUpdate SceneMan…...
不止于VWF:用Modelsim SE-64 10.4 为你的Quartus 18.1 Verilog项目做高效前仿真
超越基础工具链:Modelsim SE-64与Quartus 18.1深度协同仿真指南 当Verilog代码通过Quartus编译后,许多开发者会止步于基础功能验证。但真正的设计可靠性往往隐藏在时序边界条件和复杂状态机交互中——这正是专业仿真工具的价值所在。本文将带您突破VWF的…...
