AT715 Alicia's Rare card Challenge
分析
这道题我想到了一个做法。
维护两个和 \(s_1,s_2\),当输入的字符 \(rarity_i\) 不为 N
且 \(card\_name_i\) 中含有 Alicia
,就将 \(s_1\) 加上 \(rate_i\)。
\(s_2\) 直接维护所有 \(rate_i\) 的和即可。
最后只需要计算 \(T-\frac{T}{10} \times \frac{s_1}{s_2}\) 即可。记得要保留9位小数!
代码
先给出判断一个字符串 \(b\) 是否在字符串 \(a\) 中的代码:
bool find(string a,const string b){
return a.find(b)!=string::npos;
}
然后再给出整道题的AC代码:
#include <bits/stdc++.h>
using namespace std;
int n,t,s1,s2;
bool find(string a,const string b){
return a.find(b)!=string::npos;
}
int main(){
cin>>n>>t;
for(int i=1;i<=n;i++){
string s;char c;int r;
cin>>s>>c>>r;
if(c!='N' && find(s,"Alicia")){
s1+=r;
}
s2+=r;
}
double result=(t-t/10)*double(s1)/double(s2);
printf("%.9f",result);
return result-result;
}