当前位置: 首页 > news >正文

POJ 3273 Monthly Expense 二分

我们对每个月花费的最小花费进行二分,对于每一次二分的值mid,计算能花的月份数量,如果月份数量小于等于m,我们就不断的缩小mid,直到找到月份数量小于等于m 与 月份数量大于m的临界值,取最后一次满足条件的mid,输出即可。

#include <iostream>
using namespace std;
int arr[100007], n, m, maxt = 0;
void input()
{scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++){scanf("%d", &arr[i]);maxt = max(maxt, arr[i]);}
}
bool judge(int mid)
{int count = 0, current = mid;for (int i = 1; i <= n; i++){if (current == arr[i]){current = mid;count++;}else if (current < arr[i]){current = mid - arr[i];count++;}else{current = current - arr[i];}}if (current != mid){count++;}return count <= m;
}
void binarySearch()
{int left = maxt - 1, right = 1000000001;while (left + 1 < right){int mid = (left + right) / 2;if (judge(mid)){right = mid;}else{left = mid;}}printf("%d\n", right);
}
int main()
{input();binarySearch();return 0;
}

http://www.lryc.cn/news/149539.html

相关文章:

  • 图论(基础)
  • docker的运行原理
  • vue自定义键盘
  • k8s 安装 kubernetes安装教程 虚拟机安装k8s centos7安装k8s kuberadmin安装k8s k8s工具安装 k8s安装前配置参数
  • 2023年高教社杯数学建模思路 - 案例:感知机原理剖析及实现
  • OTFS-ISAC雷达部分最新进展(含matlab仿真+USRP验证)
  • Cell | 超深度宏基因组!复原消失的肠道微生物
  • Centos7 设置代理方法
  • Android versions (Android 版本)
  • LNMP 平台搭建(四十)
  • pcie 6.0/7.0相对pcie 5.0的变化有哪些?
  • 百度Apollo:自动驾驶技术的未来应用之路
  • C++之std::distance应用实例(一百八十八)
  • 中国建筑出版传媒许少辉八一新书乡村振兴战略下传统村落文化旅游设计日
  • 基于java Swing 和 mysql实现的购物管理系统(源码+数据库+说明文档+运行指导视频)
  • 2023.9 - java - static 关键字
  • SpringCloud学习笔记(十二)_Zipkin全链路监控
  • Java 多线程系列Ⅱ(线程安全)
  • const用法详解
  • 【LeetCode75】第四十二题 删除二叉搜索数中的节点
  • c++:QT day2 信号和槽
  • 16 Linux之JavaEE定制篇-搭建JavaEE环境
  • AI人员打闹监测识别算法
  • 如何使用CRM系统进行精细化管理客户?
  • 20230829工作心得:如何把大List 切割为多个小List?
  • 基于YOLOV8模型的阶梯和工人目标检测系统(PyTorch+Pyside6+YOLOv8模型)
  • Nginx特性应用及载装
  • vue3+ts组件通信
  • 基于卷积优化算法优化的BP神经网络(预测应用) - 附代码
  • 《论文阅读18》JoKDNet