Blow up the Enemy(四,学习总结)

在这里插入图片描述
题意:爸爸和儿子玩游戏,每个人只能从n个武器中选择一种战斗,每种武器还有两个属性,一个是伤害A,另一个是两次使用的时间间隔D,爸爸的武器随机选择,儿子想赢得比赛,替他选一种武器,求最大的获胜率。
思路:如果儿子要赢,那肯定选性能最好的,在时间相同的情况下打出的伤害最先到达100,而爸爸随机选择,求出性能最强的武器的个数k,爸爸选择最强的概率为k/n,则儿子获胜概率为0.5*(k/n),当爸爸未选择最强武器,概率为(n-k)/k,儿子一定会赢,概率为(n-k)/k,两个数相加就是赢的最大概率。
注意;每轮测试结束一些变量的初始化;main(void);数据类型即范围。

#include <bits/stdc++.h>
#include <map>
using namespace std;
double ans;
int h,t;
int k,m;
int main(void){
	int T;
	cin>>T;
	while(T--){
		double hu,mi=1e9;
        k=0;
		int n;
		cin>>n;
		    m=n;
		 while(m--){
		 	cin>>h>>t;
		 	hu =((100 + h - 1) / h - 1) * t;//杀死需要的时间 
		 	if(hu < mi){
		 	mi = hu;
		 	k=1;
		     }
			else if(hu == mi){
			 	k++;
			 } 
		 }	
	    ans = (double)(n - k)/ n + (double)k/(2*n);
	    printf("%.20lf\n", ans);
        }
	return 0;
}
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页