码迷,mamicode.com
首页 > 其他好文 > 详细

AtCoder Grand Contest 044

时间:2020-05-24 21:09:03      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:space   its   ons   http   cos   air   push   alt   highlight   

比赛爆零==

技术图片

 

 简单来说 题意就是 给一个N 然后给了4种操作的代价 求最小的代价。用DFS搜索

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main () {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int t;
	cin >> t;
	while(t--) {
		ll n, a, b, c, d;
		cin >> n >> a >> b >> c >> d;
		std::vector<pair<int, ll>> ops;
		// ops.emplace_back(2, a);
		ops.push_back(make_pair(2, a));
		ops.push_back(make_pair(3, b));
		ops.push_back(make_pair(5, c));
		const ll inf = 4e18;
		map<ll, ll> mp;
		mp[0] = 0;
		mp[1] = d;
		function<ll(ll)> DFS = [&](ll x) {
			if(mp.find(x) != mp.end()) {	//如果找到了返回这个值
				return mp[x];
			}
			ll ret = inf;
			//不进行判断会wa
			if((long double)d * (long double)x < ret) {
				ret = d * x;
			}
			for(auto& p : ops) {
				int num = p.first;
				ll cost = p.second;
				//分成了两种情况:第一种是减1;第二种是加1
				ret = min(ret, DFS(x / num) + cost + d * (x % num));
				if(x % num != 0) {
					ret = min(ret, DFS(x / num + 1) + cost + d * (num - x % num));
				}
			}
			return mp[x] = ret;
		};
		cout << DFS(n) << endl;
	}
	return 0;
}

 

AtCoder Grand Contest 044

标签:space   its   ons   http   cos   air   push   alt   highlight   

原文地址:https://www.cnblogs.com/lightac/p/12952435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!