洛谷 P1800 software(DP+二分)【提高+/省选−】

题目链接

https://www.luogu.com.cn/problem/P1800

思路

对于大于等于最优解的天数,一定能使公司交付软件。对于小于最优解的天数,一定无法使公司交付软件。所以考虑二分答案 x x x

定义 f [ i ] [ j ] f[i][j] f[i][j]表示前 i i i个人做了 j j j个软件 1 1 1的模块时,他们最多还能多做多少个软件 2 2 2的模块。

因为每一个人都是相对独立的,所以转移方程为:

f [ i ] [ j ] = m a x ( f [ i − 1 ] [ k ] + ⌊ x − d 1 [ i ] × ( j − k ) d 2 [ i ] ⌋ ) f[i][j] = max(f[i-1][k] + \left \lfloor \frac{x - d1[i] \times (j - k)}{d2[i]} \right \rfloor ) f[i][j]=max(f[i1][k]+d2[i]xd1[i]×(jk))

时间复杂度: O ( n m 2 l o g 2 2 e 4 ) O(nm^2log_{2}{2e4}) O(nm2log22e4)

代码

#include <bits/stdc++.h>using namespace std;#define int long longconst int N = 1e2 + 5;
const int inf = 0x3f3f3f3f3f3f3f3f;int n, m;
int a[N], b[N], f[N][N];
bool check(int x)
{memset(f, -inf, sizeof f);f[0][0] = 0;for (int i = 1; i <= n; i++){for (int j = 0; j <= m; j++){for (int k = 0; k <= j; k++){if (x >= a[i] * (j - k))f[i][j] = max(f[i][j], f[i - 1][k] + (x - a[i] * (j - k)) / b[i]);}}}return f[n][m] >= m;
}
void solve()
{cin >> n >> m;for (int i = 1; i <= n; i++){cin >> a[i] >> b[i];}int low = 1, high = 2e4;while (low < high){int mid = low + high >> 1;if (check(mid)){high = mid;}else low = mid + 1;}cout << high << endl;
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;// cin >> t;while (t--)solve();return 0;
}

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

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

相关文章

C++性能测试工具——sysprof的使用

一、sysprof sysprof相对于前面的一些性能测试工具来说&#xff0c;要简单不少。特别是其图形界面的操作&#xff0c;非常容易上手&#xff0c;它还支持分析文件的保存和导入功能&#xff0c;这是一个非常不错的功能。做为一款系统性能测试工具&#xff0c;它支持多种硬件平台…

redis数据持久化和配置-15(备份和还原 Redis 数据)

备份和还原 Redis 数据 备份和恢复数据是管理任何数据库系统&#xff08;包括 Redis&#xff09;的关键方面。数据丢失可能是由于硬件故障、软件错误、意外删除甚至恶意攻击而发生的。因此&#xff0c;拥有强大的备份和恢复策略对于确保数据持久性和业务连续性至关重要。本课将…

【上位机——WPF】布局控件

布局控件 常用布局控件Panel基类Grid(网格)UniformGrid(均匀分布)StackPanel(堆积面板)WrapPanel(换行面板)DockerPanel(停靠面板)Canvas(画布布局)Border(边框)GridSplitter(分割窗口)常用布局控件 Grid:网格,根据自定义行和列来设置控件的布局StackPanel:栈式面板,包含的…

打卡Day33

简单的神经网络 数据的准备 # 仍然用4特征&#xff0c;3分类的鸢尾花数据集作为我们今天的数据集 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import numpy as np# 加载鸢尾花数据集 iris load_iris() X iris.data # …

python开发环境管理和包管理

在 Python 开发中&#xff0c;环境管理 和 包管理 是两个非常重要的概念。它们帮助开发者&#xff1a; 这里写目录标题 一、什么是 Python 环境管理&#xff1f;二、什么是 Python 包管理&#xff1f;三、常见文件说明&#xff08;用于包管理和环境配置&#xff09;四、典型流程…

Mybatis面向接口编程

添加与Mapper接口的映射 <!--UserMapper.xml--> <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> …

GMP模型入门

go的并发实现采用的是M:N的线程模型&#xff0c;落地就是gmp模型。 M:N模型如下图&#xff1a; gmp模型如下图&#xff1a; --- Go 的 GMP 模型是其 高效并发调度机制的核心。GMP 代表&#xff1a; G&#xff1a;Goroutine&#xff08;用户态线程&#xff09; M&#xff1a;…

达梦数据库-报错-01-[-3205]:全文索引词库加载出错

目录 一、环境信息 二、说点什么 三、模拟实验 1、前台启动数据库 2、重建全文索引报错 3、日志信息 4、查找SYSWORD.UTF8.LIB 5、想一想加做一做 6、重启数据库 7、重建全文索引 8、总结 一、环境信息 名称值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系统CentO…

经典密码学和现代密码学的结构及其主要区别(1)维吉尼亚密码—附py代码

Vigenre cipher 维吉尼亚密码 维吉尼亚密码由布莱斯德维吉尼亚在 16 世纪发明&#xff0c;是凯撒密码的一个更复杂的扩展。它是一种多字母替换密码&#xff0c;使用一个关键字来确定明文中不同字母的多个移位值。 与凯撒密码不同&#xff0c;凯撒密码对所有字母都有固定的偏移…

Ubuntu部署私有Gitlab

这个东西安装其实挺简单的&#xff0c;但是因为我这边迁移了数据目录和使用自己安装的 nginx 代理还是踩了几个坑&#xff0c;所以大家可以注意下 先看下安装 # 先安装必要组件 sudo apt update sudo apt install -y curl openssh-server ca-certificates tzdata perl# 添加gi…

【JVM 02-JVM内存结构之-程序计数器】

程序计数器 笔记记录 1. 定义2. 作用3. 特点4. 拓展理解4.1 PC寄存器存储字节码指令地址有什么用&#xff1f;4.2 PC寄存器为什么被设定为线程私有的&#xff1f;4.3 为什么执行native方法时&#xff0c;是undefined&#xff1f; 学习资料来源-b站黑马JVM& 尚硅谷JVM精讲与…

【node.js】数据库与存储

个人主页&#xff1a;Guiat 归属专栏&#xff1a;node.js 文章目录 1. 数据库概述1.1 数据库在Node.js中的作用1.2 Node.js支持的数据库类型 2. 关系型数据库集成2.1 MySQL与Node.js2.1.1 安装MySQL驱动2.1.2 建立连接2.1.3 执行CRUD操作 2.2 PostgreSQL与Node.js2.2.1 安装pg驱…

Windows10和Ubuntu24.04安装Dify

1、win10上安装docker不顺利 参考&#xff1a;Dify的安装_dify安装-CSDN博客等资料&#xff0c;Dify依赖Docker运行&#xff0c;在Win10上安装Docker&#xff0c;先安装wsl。在PowerShell(管理员)中输入&#xff1a; wsl --install 或显示“找不到指定文件”&#xff0c;或显示…

电网绝缘子及破损、闪络缺陷YOLO数据集

概述 电网绝缘子及破损、闪络缺陷YOLO数据集​​&#xff0c;专为输电线路缺陷检测任务设计&#xff0c;可帮助开发者快速构建智能化识别模型。 主要内容 ​​数据集规模​​ 训练集&#xff1a;2004张标注图像验证集&#xff1a;907张标注图像所有数据均经过严格筛选与标注&…

5.2.4 wpf中MultiBinding的使用方法

在 WPF 中,MultiBinding 允许将多个绑定(Binding)组合成一个逻辑结果,并通过一个转换器(IMultiValueConverter)处理这些值,最终影响目标属性。以下是其核心用法和示例: 核心组件: MultiBinding:定义多个绑定源的集合。 IMultiValueConverter:实现逻…

基于SpringBoot+Vue的足球青训俱乐部管理后台系统的设计与开发

项目背景与概述 随着足球青训行业的快速发展&#xff0c;如何高效、规范地管理学员、教练以及课程等日常工作&#xff0c;成为了青训俱乐部运营的重要课题。为了提升俱乐部的管理效率与用户体验&#xff0c;基于 Spring Boot 和 Vue.js 开发了一个 足球青训俱乐部管理后台系统…

互联网大厂Java求职面试:云原生架构与AI应用集成解决方案

互联网大厂Java求职面试&#xff1a;云原生架构与AI应用集成解决方案 场景一&#xff1a;短视频与直播平台的高并发架构设计 面试官提问 面试官&#xff08;技术总监&#xff09;&#xff1a; 郑薪苦&#xff0c;你有处理过千万级用户同时在线的直播系统吗&#xff1f;如何设…

RK3588 Opencv-ffmpeg-rkmpp-rkrga编译与测试

RK3588 Opencv-ffmpeg-rkmpp-rkrga编译与测试 硬件背景说明编译环境准备1. 编译MPP(媒体处理平台)2. 编译RGA(图形加速库)3. 构建支持硬件加速的FFmpeg重要代码修改说明4. 验证安装5.FFmpeg转码测试OpenCV编译集成Python OpenCV+FFmpeg测试硬件背景说明 RK3588是瑞芯微推出…

解锁C++递归算法:从原理到实战

递归算法初相识 ** 在 C 的奇妙世界里&#xff0c;递归算法就像是一把神奇的钥匙&#xff0c;能够开启解决复杂问题的大门。那么&#xff0c;究竟什么是递归算法呢&#xff1f;简单来说&#xff0c;递归算法就是一种函数调用自身的编程技巧。当一个函数在其定义中直接或间接地…

vue2+webpack环境变量配置

第一步&#xff1a;创建3个环境变量文件 1、创建> 生产&#xff08;本地&#xff09;环境 .env.development # 开发环境 ENVdevelopment VUE_APP_MEDIA_BASE调后端请求的地址2、创建> 测试环境 .env.staging # 测试环境 ENVstaging VUE_APP_MEDIA_BASE调后端请求的地址…