Acwing加减乘
stick_to_it · · 个人记录
Acwing加减乘
#include <set>
#include <map>
#include <queue>
#include <cmath>
#include <cstring>
#include <numeric>
#include <iostream>
#include <algorithm>
#include <unordered_set>
#include <unordered_map>
//#define int LL
#define endl '\n'
#define big_heap(T) priority_queue<T>
#define small_heap(T) priority_queue<T, vector<T>, greater<>>
using namespace std;
typedef long long LL;
typedef pair<LL, LL> PLL;
typedef pair<int, LL> PIL;
typedef pair<LL, int> PLI;
typedef pair<int, int> PII;
typedef unsigned long long ULL;
typedef pair<double, double> PDD;
const double EXP = 1e-8;
const int mod = 998244353;
const int INF = 0x3f3f3f3f;
const LL LNF = 0x3f3f3f3f3f3f3f3f;
void IOS() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
void solve() {
int n, x, y;
cin >> n >> x >> y;
vector<LL> f(n + 10, LNF);
f[0] = 0;
for (int i = 1; i <= n; i ++ ) {
if (i % 2) {
f[i] = min(f[i - 1] + x, f[(i + 1) / 2] + x + y);
} else f[i] = min(f[i - 1] + x, f[i / 2] + y);
}
cout << f[n] << endl;
}
signed main() {
IOS();
int T = 1;
// cin >> T;
while (T--) {
solve();
}
return 0;
}