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;
}
posted @ 2022-02-19 10:10  蒟蒻xiezheyuan  阅读(22)  评论(0编辑  收藏  举报