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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值