InTheBloodHorse

每日一题(20) codeforces 1042B

字数统计: 258阅读时长: 1 min
2018/10/01 Share

题目地址

题意

给一个数字n
输入 a,b 代表用 a元可以买到 b果汁,b果汁有A,B,C三种维生素,比如AB 代表有A,B两种维生素。
假如可以补充ABC这三种维生素,输出最少花费的金额。
否则输出-1

思路

就几种可能性,暴力枚举就好了
AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<bits/stdc++.h>
using namespace std;
long long INF = 1e9;
map<string,long long>m;
int main()
{
int n;
long long p;
string a;
m["A"] = INF;
m["B"] = INF;
m["C"] = INF;
m["AB"] = INF;
m["AC"] = INF;
m["BC"] = INF;
m["ABC"] = INF;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> p >> a;
sort(a.begin(),a.end());
m[a] = min(m[a],p);
}
long long ans = INF;
ans = min(m["A"] + m["B"] + m["C"], ans);
ans = min(m["A"] + m["BC"], ans);
ans = min(m["B"] + m["AC"], ans);
ans = min(m["C"] + m["AB"], ans);
ans = min(m["AB"] + m["AC"], ans);
ans = min(m["BC"] + m["AC"], ans);
ans = min(m["AB"] + m["BC"], ans);
ans = min(m["ABC"], ans);
if(ans < 0 || ans >= INF) ans = -1;
cout << ans << endl;
}

原文作者:InTheBloodHorse

原文链接:http://pyking.cn/2018/10/01/每日一题-20-codeforces-1042B/

发表日期:October 1st 2018, 6:54:06 pm

更新日期:October 2nd 2018, 11:08:31 am

版权声明:Have a fun

CATALOG
  1. 1. 题意
  2. 2. 思路