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

洛谷 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;
}

相关文章:

  • 电子电路:深入理解电磁耦合的定义与应用
  • Redis删除策略
  • 常见的gittee开源项目推荐
  • 【Elasticsearch】创建别名的几种方式
  • [linux] git强行拉取并覆盖
  • 2025电工杯数学建模竞赛A题 光伏电站发电功率日前预测问题 完整论文+python代码发布!
  • P1217 [USACO1.5] 回文质数 Prime Palindromes
  • CAN XL如何填平车载网络的“带宽鸿沟”?
  • MoE架构分析
  • K3S集群使用自签署证书拉取私有仓库镜像
  • MySQL强化关键_015_存储过程
  • redis 进行缓存实战-18
  • np.linspace() 简介
  • NLweb本地部署指南
  • JavaScript 语句标识符详解
  • 【信息系统项目管理师】第18章:项目绩效域 - 45个经典题目及详解
  • 20250523-关于Unity中的GUID简介(未完待续)
  • 车载诊断架构 --- 车载诊断有那些内容(上)
  • 解决Vue项目依赖错误:使用electron-vite重建
  • 基于vite构建的vue项目添加路由时注意要利用import.meta.glob映射构建生成后的路径
  • 广州做一个营销网站多少钱/网络推广方案的基本思路
  • 网页网站开发手机游戏/百度提交收录
  • 遂溪手机网站建设公司/代理公司注册
  • 企业网站源码 企业网站管理系统/今日疫情最新消息
  • 成都单位网站设计/百度云登录首页
  • 上网站建设公司/怎么创建网站快捷方式