比赛 2024暑假C班集训D 评测结果 ATTTTTTTTT
题目名称 亚瑟王 最终得分 10
用户昵称 liuyiche 运行时间 26.987 s
代码语言 C++ 内存使用 3.30 MiB
提交时间 2024-07-13 11:14:23
显示代码纯文本
#include<bits/stdc++.h>

using namespace std;

int T;
int n, r;
double ans;
//double f[225][]
bool vis[225];

struct node
{
    double p;
    int w;
};
vector<node> v(225);

inline void dfs(int step, double tmp, int cnt)
{
    if(step == r+1)
    {
        ans += tmp*cnt;
        return;
    }
    double y = 1;
    for(int i = 1; i <= n; ++i)
        if(vis[i] == 0)
        {
            vis[i] = 1;
            dfs(step+1,tmp*y*v[i].p,cnt+v[i].w);
            y -= y*v[i].p;
            vis[i] = 0;    
        } 
    dfs(step+1,tmp*y,cnt);
}

int main() 
{
    freopen("arthur.in", "r", stdin);
    freopen("arthur.out", "w", stdout);
        
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    
    cin >> T;
    while(T--)
    {
        cin >> n >> r;
        ans = 0;
        //memset(vis,0,sizeof(vis));
        for(int i = 1; i <= n; ++i)
            cin >> v[i].p >> v[i].w;
        dfs(1,1,0);
        cout << fixed << setprecision(10) << ans << '\n';
    }
   
	return 0;
}