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

洛谷 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.xdnf.cn/news/8394.html

相关文章:

  • 三步快速部署一个本地Windows/Linux大语言模型ChatGLM(环境配置+权重下载+运行)
  • AI架构分层原则
  • Stack主题遇到的问题
  • C# WinForm应用程序多语言实现全面指南
  • deepseek组合使用
  • 测试关键点
  • 【Kafka】编写消费者开发模式时遇到‘未解析的引用‘SIGUSR1’’
  • 掌握递归:编程中的优雅艺术
  • 精益数据分析(79/126):从黏性到爆发——病毒性增长的三种形态与核心指标解析
  • Swagger、Springfox、Springdoc-openapi 到底是什么关系
  • 使用 GPUStack 纳管摩尔线程 GPU 进行大语言模型和文生图模型的推理
  • ASPICE认证 vs. 其他标准:汽车软件开发的最优选择
  • C# UDP协议:核心原理、高效实现与实战进阶指南​
  • 2025语音语聊系统源码开发深度解析:WebRTC与AI降噪技术如何重塑语音社交体验
  • 智能存储如何应对极端环境挑战?忆联独家解锁PCIe 5.0固态存储“抗辐射”黑科技,重新定义数据安全防护新高度
  • 机会成本与沉没成本:如何做出理性经济决策
  • grafana/loki-stack 设置日志保存时间及自动清理
  • HarmonyOS NEXT~鸿蒙AI开发全解析:HarmonyOS SDK中的智能能力与应用实践
  • PCB设计教程【入门篇】——电路分析基础-读懂原理图
  • lanqiaoOJ 4330:欧拉函数模板
  • OceanBase 共享存储:云原生数据库的存储
  • 解析 Python 中的 if name == main 机制
  • 多版本Node.js共存管理工具NVM详细使用教程
  • 栈队列 模版题单
  • 2025年电工杯A题数据收集分享
  • 【萤火工场GD32VW553-IOT开发板】ADC电压表
  • 不使用Long.parseLong()将String转成long类型,不使用String.valueOf()将Long转成String类型
  • 通过上传使大模型读取并分析文件实战
  • AI浪潮下,第五消费时代的商业进化密码
  • PTA刷题笔记3(微难,有详解)