题解:P9363 [ICPC 2022 Xi'an R] Hotel
题面
大意:给定 什么性别 26 个啊)。
前置知识
字符串,一定数学能力。
算法分析
只能同队住房,那就对每个输入进行处理。
首先很容易就能发现有两个显而易见的方案:
- 全买单间。
- 全买双人间。
取最小值即可。
还有没有其他方案呢?
当然,只要有两人性别相同,我们就可以让他们住进双人间,也就是一单一双的方案。
有人就问了:没有两单一双的方案吗?
双人间只住一人,那么如果双人便宜,我们就该全买单人(方案一);否则就全买双人(方案二)。所以我们已经处理过了这种情况。
AC code
#include<bits/stdc++.h>
using namespace std;
int n,ans=0,c1,c2;
int main(){
cin>>n>>c1>>c2;
for(int i=1;i<=n;i++){
string s;
cin>>s;
int a1=min(c1,c2)*3,a2=0,a3=0;
if(s[0]==s[1]||s[0]==s[2]||s[1]==s[2]){
a2=c2+c1;
a3=c2*2;
ans+=min(a1,min(a2,a3));
}
else{
ans+=a1;
}
}
cout<<ans;
return 0;
}