1.11--06:月度开销

news/2024/12/24 11:31:50/文章来源:https://www.cnblogs.com/yhy2013/p/18548690

月度开销

题目传送门

思路

给定连续N天的开销,需要将这些天分成M个财政周期,使得开销最多的财政周期的开销尽可能少。

首先,我们可以确定一个财政周期的长度l,即将N天平均分成M个财政周期。这样每个财政周期的长度就是N/M。

然后,我们需要计算每个财政周期中的开销总和。假设当前财政周期的起始位置为i,那么当前财政周期的开销总和就是从第i天开始的连续N/M天的开销之和,即SUM(i, i+N/M-1)。

接下来,我们需要找到开销总和最大的财政周期,即找到使得SUM(i, i+N/M-1)最大的i。

我们可以使用滑动窗口的思想来解决这个问题。首先,我们计算起始位置为0的财政周期的开销总和SUM(0, N/M-1)。然后,我们从左往右依次移动起始位置i,每次移动一个位置,将起始位置i-1的开销减去第i-1天的开销,再加上第i+N/M-1天的开销,即得到起始位置为i的财政周期的开销总和SUM(i, i+N/M-1)。我们将SUM(i, i+N/M-1)与原先的最大开销进行比较,如果大于最大开销,就更新最大开销。

最后,最大开销就是最大月度开销的最小值。

#include <bits/stdc++.h>
using namespace std;
#define N 100005 
int n, m, a[N];
bool check(int k) //在每个子段和小于等于k的情况下,最少的子段数量是否小于等于m
{//注意:a中的单独一个元素也可能大于k int sum = 0, ct = 1;//sum:当前子段加和 ct:现在在看第几个子段 for(int i = 1; i <= n; ++i){if(a[i] > k)//存在元素大于k, return false;if(sum + a[i] <= k)sum += a[i];else    {ct++;//看下一子段 sum = a[i];//i作为下一子段的第一个元素 }}return ct <= m;    
}
int main()
{int tot = 0;//加和 cin >> n >> m;for(int i = 1; i <= n; ++i){cin >> a[i];tot += a[i];}int l = 0, r = tot, mid;//子段和最大值不会大过所有数的加和 while(l < r)//二分答案求满足某一条件的最小值 {mid = (l + r) / 2;if(check(mid))r = mid;elsel = mid + 1;}cout << l;return 0;
}

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

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

相关文章

SIM Jacker攻击分析

攻击者使用普通手机发送特殊构造的短信即可远程定位目标,危害较大。sim卡的使用在手机上的使用非常普遍,所以一旦SIM卡上出现什么问题就会造成非常大的影响。在19年的报告纰漏中,在全球估算共有10亿设备的sim卡容易遭受SIMJacker攻击,这篇也是比较浅显的对整个攻击进行分析…

shell动态修改yml配置实例

yq安装https://github.com/mikefarah/yq/tree/master每个yq版本支持的选项参数都不一样修改Dockerfile[root@instance base-tlog-test]# vi Dockerfile FROM 192.168.30.113/library/java:latest ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &am…

『模拟赛』NOIP2024加赛5

Rank 反向挂分大王A. 暴力操作(opt) 签,但是没有人签。 都想到了二分和更新 c 值,但是 c 多多少少没更到最优。 首先还是调和级数预处理,倒序取 min。然后考虑到超过 \(m\) 的也有可能产生更小的代价,因此 \(\mathcal{O(n)}\) 枚举一遍找到最小的 \(j\) 使 \(i\times j\g…

[Moectf2024 ezMaze]

去壳 分析:迷宫分析10 * a2 - 10:Y (a1 - 1) / 8 :X 表示按字节处理迷宫迷宫以十六进制压缩,但迷宫是80 * 56的二进制迷宫 dump下来保存,转二进制,用bin(maze[2:]).zfill(8) 脚本(bfs): from collections import deque maze = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…

有理逼近AAA算法

用于有理逼近的AAA算法,可以有效防止伪极点现象用于有理逼近的AAA算法The AAA Algorithm for Rational Approximation, Yuji Nakatsukasa, Olivier Ste, and Lloyd N. Trefethen, SIAM Journal on Scientific Computing 2018 40:3, A1494-A1522, https://doi.org/10.1137/16M1…

Hgame2023 Reverse

Hgame 2023 [HGAME 2023 week1]test your IDA 用ida打开即可 [HGAME 2023 week1]encode 查壳 32位windows 加密函数将输入的字节转高位和低位进行加密,后与byte_403000进行比较 解密脚本: 这里采取了爆破 enc = [8, 6, 7, 6, 1, 6, 13, 6, 5, 6, 11, 7, 5, 6, 14, 6, 3, 6, 1…

[笔记]Dijkstra算法正确性证明

最近做了一些题,感觉对算法更深刻的理解是比套板子更深层次的,在这个层次上解决问题,思路会更加清晰。比如P5687 [CSP-S2019 江西] 网格图(题解)这道题就是网格图的最小生成树,解法就建立在普通Kruskal的基础上,当时想了挺久也没想出来,看了题解才豁然开朗。所以各算法…

企业搭建帮助中心:提升服务效率与客户满意度的双重优势

在当今快节奏的商业环境中,企业面临着日益增长客户服务需求。搭建一个有效的帮助中心,不仅能够提升服务效率,还能增强客户满意度,这对于企业的长期发展至关重要。本文将探讨企业搭建帮助中心的优势,并提供实用的策略。 在构建企业帮助中心的过程中,HelpLook作为一个强大的…

软件管理,磁盘存储,文件系统以及网络协议

目录硬盘存储术语CHS 磁盘存储管理 LVM RAID硬盘阵列 软件包管理 搭建私有yum仓库 系统安装之后的常用初始化步骤 OSI七层模型 linux端口的简单介绍 TCP简单介绍 ip地址分类硬盘存储术语CHShead:磁头 磁头数=盘面数 track:磁道 磁道=柱面数 sector:扇区,512bytes cylinder:…

【Capture one 2023软件下载与安装教程】

1、安装包 「Capture One 23」: 链接:https://pan.quark.cn/s/9ff0306530d1 提取码:xXDC 「Capture one22」: 链接:https://pan.quark.cn/s/34b723a4d6e1 提取码:gpM3 「Capture One 21」: 链接:https://pan.quark.cn/s/d65ea77ba33a 提取码:8A5D 2、安装教程(建议关闭杀…

[题解]P5687 [CSP-S2019 江西] 网格图

P5687 [CSP-S2019 江西] 网格图 简单来说题目就是给定一个\(n\times m\)的网格图,同行边权相同,同列边权相同,求该网格图的最小生成树。 根据Kruskal算法的贪心思想,我们要优先选择权值尽可能小的行,并将这条边应用于尽可能多的列。列方向同理。 为了保证最终生成树的连通…

鸿蒙NEXT自定义组件:太极Loading

【引言】(完整代码在最后面) 本文将介绍如何在鸿蒙NEXT中创建一个自定义的“太极Loading”组件,为你的应用增添独特的视觉效果。 【环境准备】 电脑系统:windows 10 开发工具:DevEco Studio NEXT Beta1 Build Version: 5.0.3.806 工程版本:API 12 真机:mate60 pro 语言:…