Martian148's blog Martian148's blog
首页
  • ICPC 算法笔记
  • ICPC 算法题解
  • 体系结构
  • 高等数学
  • 线性代数
  • 概率论与数理统计
  • 具体数学
  • Martian148的奇思妙想
  • 游记
  • 通识课笔记
关于
  • useful 网站
  • 友情链接
  • 分类
  • 归档

Martian148

一只热爱文科的理科生
首页
  • ICPC 算法笔记
  • ICPC 算法题解
  • 体系结构
  • 高等数学
  • 线性代数
  • 概率论与数理统计
  • 具体数学
  • Martian148的奇思妙想
  • 游记
  • 通识课笔记
关于
  • useful 网站
  • 友情链接
  • 分类
  • 归档
  • 线上赛板子(实时更新)
  • 数据结构

  • 数学

  • 计算几何

  • 动态规划

  • 图论

  • 字符串

  • 杂项

    • 01分数规划
      • 二分法
      • Dinkelbach 算法
    • 莫队
    • CDQ分治
    • 离散化
    • RMQ
    • 悬线法
    • 模拟退火
    • 整体二分
    • Blog 对拍 Debug 复杂度
  • 算法笔记
  • 杂项
martian148
2024-09-03
目录

01分数规划

# 01分数规划

分数规划处理这样一些问题

给出 aia_iai​ 和 bib_ibi​ ,求一组 wi∈{0,1}w_i \in \{0,1\}wi​∈{0,1} 最小化或者最大化

∑i=1nai×wi∑i=1nbi×wi \frac{\sum\limits_{i=1}^n a_i \times w_i}{\sum\limits_{i=1}^n b_i \times w_i} i=1∑n​bi​×wi​i=1∑n​ai​×wi​​

求解

# 二分法

假设需要求最大值,那么我们二分一个答案 midmidmid

∑i=1nai×wi∑i=1nbi×wi>mid⟹∑i=1nai×wi−mid×∑i=1nbi×wi>0⟹∑i=1nwi×(ai−mid×bi)>0 \begin{aligned} &\frac{\sum\limits_{i=1}^n a_i \times w_i}{\sum\limits_{i=1}^n b_i \times w_i}>mid\\ \Longrightarrow &\sum\limits_{i=1}^n a_i \times w_i -mid \times \sum\limits_{i=1}^n b_i \times w_i >0\\ \Longrightarrow &\sum\limits_{i=1}^n w_i \times (a_i-mid \times b_i)>0 \end{aligned} ⟹⟹​i=1∑n​bi​×wi​i=1∑n​ai​×wi​​>midi=1∑n​ai​×wi​−mid×i=1∑n​bi​×wi​>0i=1∑n​wi​×(ai​−mid×bi​)>0​

那么,只需要求出不等号左边的最大值就好了,如果左边的最大值大于 000 ,说明这个 midmidmid 是成立的

# Dinkelbach 算法

暂时还不知道什么东西

分数规划的难点在于如何求出 ∑i=1nwi×(ai−mid×bi)\sum\limits_{i=1}^n w_i \times (a_i-mid \times b_i)i=1∑n​wi​×(ai​−mid×bi​) 的最大值/最小值

上次更新: 2025/04/08, 18:03:31
Manacher
莫队

← Manacher 莫队→

最近更新
01
计算机网络笔记
06-13
02
LLM101 NLP学习笔记
06-02
03
《python科学计算入门》学习笔记
05-30
更多文章>
Theme by Vdoing | Copyright © 2024-2025 Martian148 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式