Kyopro Library
読み取り中…
検索中…
一致する文字列を見つけられません
linear_programming_2vars.hpp
[詳解]
1
#
include
"../../kyopro_library/template.hpp"
2
3
/// @brief 2変数の線形計画問題
4
/// @brief ax + by >= c, x >= 0, y >= 0 という条件のもと、px+qy の最小値を返す
5
/// @note O(sqrt(c))
6
ll
LinearProgramming_2valiables
(ll a, ll b, ll c, ll p, ll q) {
7
if
(a*q<b*p) swap(a,b), swap(p,q);
8
ll ret=
INFL
;
9
if
(a*a>c) {
10
for
(ll x=0; x<=(c+a-1)/a; x++) {
11
ll y=max(0LL,(c-a*x+b-1)/b);
12
ret=min(ret,p*x+q*y);
13
}
14
}
else
{
15
for
(ll y=0; y<a&&y<=(c+b-1)/b; y++) {
16
ll x=max(0LL,(c-b*y+a-1)/a);
17
ret=min(ret,p*x+q*y);
18
}
19
}
20
return
ret;
21
}
LinearProgramming_2valiables
ll LinearProgramming_2valiables(ll a, ll b, ll c, ll p, ll q)
2変数の線形計画問題
Definition
linear_programming_2vars.hpp:6
INFL
const ll INFL
Definition
template.hpp:13
math
linear_programming_2vars.hpp
構築:
1.13.2