本文主要是介绍VOJ islands打炉石传说 题解 二进制枚举,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
islands打炉石传说
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node
{int cost, d, w;
};
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n; // n张牌cin >> n;vector<node> v(n);for (int i = 0; i < n; i++){cin >> v[i].cost; // 该牌法力值消耗cin >> v[i].d; // d表示牌的类型cin >> v[i].w; // d=0,攻击力为w的随从;d=1,增加随从w攻击力的法术}int ans = 0; // 随从的最大总攻击力for (int i = 0; i < (1 << n); ++i) // 二进制枚举选牌的所有情况{int sum1 = 0; // 随从牌的总攻击力int sum2 = 0; // 法术牌能增加的总攻击力int cost_cnt = 0; // 总的法力值消耗for (int j = 0; j < n; j++){if (i & (1 << j)){cost_cnt += v[j].cost;if (v[j].d == 1)sum2 += v[j].w;elsesum1 += v[j].w;}}if (cost_cnt > 10) // 法力值消耗超过10点,该方案无效continue;else{if (sum1 > 0) // 只有当存在随从牌时,法术牌才能增加攻击力sum1 += sum2;ans = max(ans, sum1); // 维护ans为总攻击力的最大值}}cout << ans;return 0;
}
这篇关于VOJ islands打炉石传说 题解 二进制枚举的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!