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))
6ll 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}
ll LinearProgramming_2valiables(ll a, ll b, ll c, ll p, ll q)
2変数の線形計画問題
const ll INFL
Definition template.hpp:13