其他分享
首页 > 其他分享> > AT715 Alicia's Rare card Challenge

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;
}

标签:Rare,string,int,Challenge,Alicia,result,return,find
来源: https://www.cnblogs.com/xiezheyuan/p/note-rem-at715.html