有n件物品,每件物品都有一个花费,要求每m个中必须至少选2个,求最小花费
题目
#include<bits/stdc++.h>
using namespace std;
#define int long long
#pragma GCC optimize(2)
const int maxn = 2e4 + 5, maxm = 2e3 + 5, inf = 1e9;
int a[maxn];
int f[maxm][maxm];//f[i][j]表示选了第i个,上一个选的是第i-j个(每m个中选2个等价于选的第k个和第k-2个的距离<=m
int pre_min[maxm][maxm];//前缀最小值
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0' && ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;
}
void write(int x)
{if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10+'0');return;
}
void solve(){int n, i, j, m;//cin >> n >> m;n = read(), m = read();for(i = 1; i <= n; i++){//cin >> a[i];a[i] = read();}a[++n] = 0;//在末尾加一个0,表示这个人必选,方便后面统计答案int res = inf;for(i = 1; i <= m; i++){for(j = 0; j <= m; j++){f[i][j] = pre_min[i][j] = inf;}for(j = 1; j < i; j++){f[i][j] = a[i] + a[i - j];pre_min[i][j] = min(pre_min[i][j - 1], f[i][j]);}}for(i = m + 1; i <= n; i++){int cur = (i - 1) % m + 1;for(j = 1; j < m; j++){int last = (i - j - 1) % m + 1;f[cur][j] = pre_min[last][m - j] + a[i];pre_min[cur][j] = min(pre_min[cur][j - 1], f[cur][j]);}}for(j = 1; j < m; j++){res = min(res, f[(n - 1) % m + 1][j]);}//cout << res << '\n';write(res);putchar('\n');// for(i = 1; i <= m; i++){// for(j = 0; j <= m; j++){// f[i][j] = inf;// pre_min[i][j] = inf;// }// }// f[1][0] = a[1];// f[1][1] = a[1];// const int mod = m;// pre_min[1][0] = pre_min[1][1] = a[1];// int res = inf;// //cout << pre_min[0][0] << '\n';// for(i = 2; i <= n; i++){//一次用滚动数组更新完不好搞,因为pre[0][k] = 0,会影响后面的更新// int cur = i % mod;// for(j = 1; j <= m - 1 && i - j >= 0; j++){// int last = (i - j) % mod;// int tmp = min(i - j, m - j);// f[cur][j] = pre_min[last][tmp] + a[i];// // if(i == 2 && j == 2){// // cout << "test";// // cout << (i - j - 1 + m) % m + 1 << ' ' << tmp << ' ' << pre_min[(i - j - 1 + m) % m + 1][tmp] << '\n';// // }// pre_min[cur][j] = min(pre_min[cur][j - 1], f[cur][j]);// //res = min(res, f[i][j]);// cout << i << ' ' << j << ' ' << tmp << ' ' << f[cur][j] << ' ' << pre_min[cur][j] << '\n';// }// }// for(i = 1; i <= m; i++){// res = min(res, f[n % mod][i]);// }// cout << res << '\n';}
signed main(){// ios::sync_with_stdio(0);// cin.tie(0);int T;//cin >> T;T = read();while(T--){solve();}return 0;
}
相关文章:
有n件物品,每件物品都有一个花费,要求每m个中必须至少选2个,求最小花费
题目 #include<bits/stdc.h> using namespace std; #define int long long #pragma GCC optimize(2) const int maxn 2e4 5, maxm 2e3 5, inf 1e9; int a[maxn]; int f[maxm][maxm];//f[i][j]表示选了第i个,上一个选的是第i-j个(每m个中选2个…...
Hive数据库与表操作
文章目录 一、准备工作二、Hive数据库操作(一)Hive数据存储(二)创建数据库(三)查看数据库(四)修改数据库信息 一、准备工作 二、Hive数据库操作 (一)Hive数据…...
C语言数据结构之顺序表(上)
前言: ⭐️此篇博文主要分享博主在学习C语言的数据结构之顺序表的知识点时写的笔记,若有错误,还请佬指出,一定感谢!制作不易,若觉得内容不错可以点赞👍收藏❤️,这是对博主最大的认可…...
详解原生Spring中的控制反转和依赖注入-构造注入和Set注入
😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…...
数组中的第 K 个最大元素(C++实现)
数组中的第 K 个最大元素 题目思路代码 题目 数组中的第 K 个最大元素 思路 通过使用优先队列(最大堆)来找到数组中第k大的元素。通过弹出最大堆中的前k-1个元素,留下堆中的顶部元素作为结果返回。 代码 class Solution { public:int find…...
C++ day42背包理论基础01 + 滚动数组
背包问题的重中之重是01背包 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 每一件物品其实只有两个状态,取或者不…...
数字人透明屏幕是如何工作的?
数字人透明屏幕是一种令人兴奋的科技产品,它结合了人脸识别、全息影像技术以及透明屏幕,为人们带来了全新的互动体验。本文将详细介绍数字人透明屏幕的工作原理以及其应用场景。 工作原理 数字人透明屏幕的工作原理主要包括人脸识别和全息影像技术。人脸…...
MIGO收货报替代“ZF002“, 步骤““ 中存在语法错误消息号 GB032错误
MIGO收货报替代"ZF002", 步骤"" 中存在语法错误消息号 GB032错误。替代"ZF002", 步骤"" 中存在语法错误消息号 GB032诊断 在 ABAP 代码生成过程中,在替代ZF002中发现了语法错误。 系统响应 未为该布尔陈述生成 ABAP 代码&…...
Vue3的transition标签以及animate.css使用详解
一:前言 在项目开发中,有一种特殊情况是使用动画过渡去完成某个效果。比如淡入淡出,或者在动画完成后执行某些操作等。在以前开发中我们通常会选择使用 CSS3 进行研发。但是这样会有很多不好的地方,比如最原始化的封装,…...
IDEA不支持Java8了怎么办?
IDEA不支持Java8了怎么办? 01 异常发生场景 当我准备创建一个springboot项目时,发现Java8没了 02 问题的产生及其原因 查阅了官方文档之后,确认了是Spring Boot 不再支持 Java 8,不是我的问题,这一天终于还是来了 0…...
flutter的TextField参数、案例整理(上)
TextField 概述 TextField 用于文本输入 构造函数 const TextField({Key key,this.controller, this.focusNode,this.decoration const InputDecoration(),TextInputType keyboardType,this.textInputAction,this.textCapitalization TextCapitalization.none,this.style…...
【Linux进阶之路】进程间通信
文章目录 一、原理二、方式1.管道1.1匿名管道1.1.1通信原理1.1.2接口使用 1.2命名管道 2.共享内存2.1原理2.2接口使用 3.消息队列原理 4.信号量引入原理 总结 一、原理 进程间的通信是什么?解释: 简单理解就是,不同进程之间进行数据的输入输出…...
深度学习框架配置
目录 1. 配置cuda环境 1.1. 安装cuda和cudnn 1.1.1. 显卡驱动配置 1.1.2. 下载安装cuda 1.1.3. 下载cudnn,将解压后文件复制到cuda目录下 1.2. 验证是否安装成功 2. 配置conda环境 2.1. 安装anaconda 2.2. conda换源 2.3. 创建conda环境 2.4. pip换源 3.…...
全局配置
1.全局配置文件及其配置项 1.1.小程序窗口 1.2 窗口节点 1.2.1 导航栏标题 标题: 标题颜色: 背景色:只支持16进制值 下拉刷新: 刷新背景色: 刷新样式: 触底距离:...
leetcode算法之字符串
目录 1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘 1.最长公共前缀 最长公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//法一:两两比较string ret strs[0];for(int i1;i<strs.size();i){ret f…...
mongodb查询数据库集合的基础命令
基础命令 启动mongo服务 mongod -f /usr/local/mongodb/mongod.conf //注意配置文件路径停止mongo服务 关闭mongodb有三种方式: 一种是进入mongo后通过mongo的函数关闭; use admin db.shutdownServer()一种是通过mongod关闭; mongod --s…...
基于FactoryBean、实例工厂、静态工厂创建Spring中的复杂对象
😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…...
Android 如何让路由器或者其他AP设备获取到主机名
问题原因: 连接到AP设备后,发现主机名在路由器或者其他AP设备都无法正常显示 抓取tcpdump log发现DHCP request option中没有携带host name(Option 12)字段 如下图所示 修改方法: 将config_dhcp_client_hostname配置true后,可以看到host name了 具体代码逻辑如下 pack…...
java三大集合类--List
List Set Map 一、List 几个小问题: 1、接口可以被继承吗?(可以) 2、接口可以被多个类实现吗?(可以) 3、以下两种写法有什么区别? //List list1new List();是错误的因为List()…...
机器人向前冲
欢迎来到程序小院 机器人向前冲 玩法:一直走动的机器人,点击鼠标左键进行跳跃,跳过不同的匝道,掉下去即为游戏接续, 碰到匝道铁钉游戏结束,一直往前冲吧^^。开始游戏https://www.ormcc.com/play/gameStart…...
不记命令也能排障:catpaw chat 实战手册俟
Julia(julialang.org)由Stefan Karpinski、Jeff Bezanson等在2009年创建,目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是: 高性能:编译型语言(JIT࿰…...
边缘计算与AI推理:在终端设备上部署模型的挑战
边缘AI部署的测试价值重构随着AI推理任务从云端下沉至终端设备,软件测试的战场正经历根本性变革。边缘计算通过将模型部署于摄像头、工业传感器、车载终端等设备,实现了毫秒级响应的实时决策能力。据行业预测,2026年全球边缘AI设备市场规模将…...
Swoole Worker进程莫名退出?Linux信号处理、OOM Killer与systemd资源限制的终极对齐方案
第一章:Swoole Worker进程莫名退出?Linux信号处理、OOM Killer与systemd资源限制的终极对齐方案Swoole Worker进程在高并发场景下突然终止,却无明确错误日志,是生产环境高频痛点。根本原因常非代码缺陷,而是底层系统机…...
多租户下的ERP系统的仓储管理模块分析设计轿
springboot自动配置 自动配置了大量组件,配置信息可以在application.properties文件中修改。 当添加了特定的Starter POM后,springboot会根据类路径上的jar包来自动配置bean(比如:springboot发现类路径上的MyBatis相关类ÿ…...
SparkMD5 增量哈希实战:如何高效处理大文件而不占用过多内存
SparkMD5 增量哈希实战:如何高效处理大文件而不占用过多内存 【免费下载链接】js-spark-md5 Lightning fast normal and incremental md5 for javascript 项目地址: https://gitcode.com/gh_mirrors/js/js-spark-md5 SparkMD5 是一个超快的 JavaScript MD5 实…...
凌晨三点修复0day!PHP AI实时检测系统如何在上线前拦截CVE-2024-XXXXX:一线攻防团队纪实
第一章:PHP AI 代码检测的诞生背景与实战价值近年来,PHP 作为全球广泛使用的 Web 开发语言,持续支撑着数以百万计的网站与 CMS 系统(如 WordPress、Drupal)。然而,其动态类型、弱语法约束及历史遗留的编码习…...
周测复盘【前缀和and差分】
其实存了三个草稿没发,因为题解半路解不出来了。 花了四十分钟搞三个平台关联,最后一道题还是没来得及交上哈哈,OK直接进入正题 题目A Atcoder Trifecta 题目翻译: 编号为1到N的N匹马进行了一场比赛 所有马匹同时起跑&#x…...
抖音视频批量下载终极指南:3分钟掌握高效采集技巧
抖音视频批量下载终极指南:3分钟掌握高效采集技巧 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...
手把手调试:用逻辑分析仪抓取Camera Sensor的DVP和SPI时序波形(附MIPI对比)
实战指南:用逻辑分析仪精准捕捉Camera Sensor的DVP与SPI时序问题 调试摄像头Sensor时,图像花屏、颜色异常或帧率不稳定往往是工程师最头疼的问题。上周在调试一款安防摄像头模组时,客户反馈夜间画面出现规律性条纹,经过逻辑分析仪…...
如何用Input Leap实现跨设备控制?打造无缝多设备协作体验
如何用Input Leap实现跨设备控制?打造无缝多设备协作体验 【免费下载链接】input-leap Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/in/input-leap 在多设备办公环境中,频繁切换键盘鼠标不仅打断工作流,更降低…...
