• 绝地求生


    绝地求生

    描述

    绝地求生游戏的规则是,所有人从飞机上跳伞到荒岛上某个坐标,然后在这里相互厮杀,最后一个活下来的玩家获胜。

    为了让游戏更丰富有趣,每一个时刻,一个圆形区域将会受到轰炸机的轰炸,我们可以认为,此时此刻,轰炸范围内的玩家都会阵亡。

    TYZ著名颓废OI选手HJY今天和她的伙伴们一起玩吃鸡,但是HJY总是吃不到鸡(赢不了),因此她决定跟对手们一起比RP。

    假设所有人在落地的一瞬间开始,就都站立不动,等待轰炸,每一个时刻,轰炸机都会在原先设定好的m圆形轰炸区域中,等概率的选择其中一个轰炸区域,然后把这个区域内的活人全部炸死(在区域边缘也算炸死,如果半径为0,那么在轰炸点的位置也算被炸死)。当只剩下一个人活着,或者所有的人都被炸死(最后一次同时死掉)的时候,游戏结束。

    注意:每次轰炸是随机选一个轰炸区域,一个区域可以被轰炸多次。

    假设某次轰炸,炸死了K个人,那么,所有在这次轰炸之后还活着的人会得到K分。

    HJY一开始就知道每个人的坐标以及每次轰炸的区域信息,请问,HJY在这次比赛中得分的期望值是多少呢?

    /*************************************************************************
    	> File Name: d.cpp
    	> Author: Henry Chen
    	> Mail: 390989083@qq.com 
    	> Created Time: 四 10/ 1 11:35:17 2020
     ************************************************************************/
    
    #include<bits/stdc++.h>
    using namespace std;
    struct people
    {
    	int x,y;
    }p[20];
    struct cir
    {
    	int x,y,r;
    }ex[100001];
    bool ck(people a,cir b)
    {
    	double dis = sqrt(1.0*(a.x-b.x)*(a.x-b.x)+1.0*(a.y-b.y)*(a.y-b.y));
    	if(dis <= b.r) return 1;
    	return 0;
    }
    int main()
    {
    	int n,m;
    	cin >> n >> m;
    	for(int i = 1;i <= n;i++)
    	{
    		scanf("%d%d",&p[i].x,&p[i].y);
    	}
    	for(int i = 1;i <= m;i++)
    	{
    		scanf("%d%d%d",&ex[i].x,&ex[i].y,&ex[i].r);
    	}
    	double ans = 0;
    	for(int i = 2;i <= n;i++)
    	{
    		int sm1 = 0;
    		int sm2 = 0;
    		for(int j = 1;j <= m;j++)
    		{
    			if(!ck(p[1],ex[j]) && ck(p[i],ex[j]))
    			{
    				sm1++;
    			}
    			else if(ck(p[1],ex[j]))
    			{
    				sm2++;
    			}
    		}
    		//printf("%d %d %d
    ",i,sm1,sm2);
    		ans += sm1/1.0/(sm2+sm1);
    	}
    	//cout << ans << endl;
    	printf("%.2lf
    ",ans);
    	return 0;
    }
    

     正解是状态压缩的期望dp,我这里使用的依赖每个人对于答案的期望贡献的独立性,分别统计。

  • 相关阅读:
    C++ Sqlite3的基本使用
    DirectX11 初探XMVECOTR&XMMATRIX
    lib和dll文件的初了解
    游戏设计模式——C++单例类
    C++11智能指针的深度理解
    你的文章里为什么不放源码Github链接了
    堡垒机的核心武器:WebSSH录像实现
    Asciinema文章勘误及Web端使用介绍
    Asciinema:你的所有操作都将被录制
    Django实现WebSSH操作物理机或虚拟机
  • 原文地址:https://www.cnblogs.com/mzyy1001/p/13758742.html
Copyright © 2020-2023  润新知