1002:http://acm.hdu.edu.cn/showproblem.php?pid=6803
题意:就是给你n把武器,每把武器都有伤害和射击间隔,你的对手是随机选择武器,你可以选择任意武器包括对手选的那把,如果你们的生命同时小于等于0,你获胜概率是50%,问你最大的胜利概率是多少。
思路:很明显,我们想要赢,我们就要选择那把杀人最快的武器。那么问题就变成计算杀人时间,然后排序,选第一把。但是可能很多把武器时间一样。统计一下这个数量就好。

//team yglance+xhwl+TTD
#include<bits/stdc++.h>
typedef long long ll;
const ll mod=1e9+7;
const ll maxn=1e5+7;
const double pi=acos(-1);
using namespace std;
//就是算出每把武器杀人时间,然后贪心 
int ti[1005];//杀人时间
int a,b;
int main()
{
    ios::sync_with_stdio(false);
    //freopen("in.txt","r",stdin);
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a>>b;
            if(100%a==0)
            {
                ti[i]=b*((100/a)-1);
            }
            else
            {
                ti[i]=b*(100/a);
            }
        }//计算杀人时间
        sort(ti,ti+n);//排序
        int ans=1;//最少有一把杀人时间最短
        for(int i=1;i<n;i++)
        {
            if(ti[i]==ti[0])
            {
                ans++;//相等数量增加
            }
            else
            {
                break;
            }
        }
        //现在有ans把武器,杀人时间最短
        cout<<fixed<<setprecision(6)<<double(n-ans)/n+0.5*double(ans)/n<<endl;//别人选到那些杀人时间不是最短的武器,他必输,选到这些,五五开。
    }
     return 0;
}