B - Blow up the Enemy
https://vjudge.net/contest/386568#problem/B
The game provides nn weapons, each has two properties: Damage and Delay. The ithith weapon has Damage AiAi and Delay DiDi. When a player shoots with this weapon, his enemy's HP is reduced by AiAi, then he must wait for DiDi ms before he can shoot again.
The game processes as follows:
1. Before the game starts, Zhang3 and Father choose a weapon respectively. Father always randomly chooses one of the nn weapons with equal probabilities. Each player can only use the chosen weapon during the game.
2. When the game starts, Zhang3 and Father have 100100 HP each. They make their first shot at the same time.
3. They keep shooting as quickly as possible. That means, a player shoots instantly whenever he can shoot, until the game ends.
4. When a player's HP is reduced to 0 or lower, he dies and the game ends. If the other player is still alive (i.e. has HP higher than 0), then the living player wins the game; otherwise (if the two players die at the same time), each player has 50%50% probability to win the game.
Zhang3 wants to win the game. Please help her to choose a weapon so that the probability to win is maximized. Print the optimal probability.
InputThe first line of the input gives the number of test cases, T(1≤T≤100)T(1≤T≤100). TT test cases follow.
For each test case, the first line contains an integer n(1≤n≤1000)n(1≤n≤1000), the number of weapons in the game.
Then nn lines follow, the ithith of which contains two integers Ai,Di(1≤Ai≤100,1≤Di≤10000)Ai,Di(1≤Ai≤100,1≤Di≤10000), representing the Damage and the Delay of each weapon.
The sum of nn in all test cases doesn't exceed 20002000.
OutputFor each test case, print a line with a real number p(0≤p≤1)p(0≤p≤1), representing the optimal probability.
Your answers should have absolute or relative errors of at most 10−610−6.
Sample Input
2
1
100 100
4
50 50
40 20
30 10
20 100
Sample Output
0.5
0.875
题意:
父亲 和 儿子 对战游戏:
从n个武器中选择一种,每种武器有伤害A,两次使用的时间间隔D
父亲的武器随机选择,儿子选一种武器,使得儿子获胜概率最大。
输出最大获胜率
思路:
贪心,儿子选择性价比最高的,使得在时间相同的情况下打出的伤害更快达到100;
父亲选择强道具的概率 = 强道具个数 / n;
则儿子获胜概率为 (1/2)强道具个数 / n;
1)父亲未选择强武器,概率(n - 强道具个数)/ 强道具个数;
2)在此情况下儿子胜率为(n - 强道具个数)/ 强道具个数
最大概率为两数和
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<bitset>
#include<cassert>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<deque>
#include<iomanip>
#include<list>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#include <vector>
#include <iterator>
#include <utility>
#include <sstream>
#include <limits>
#include <numeric>
#include <functional>
using namespace std;
#define gc getchar()
#define mem(a) memset(a,0,sizeof(a))
//#define sort(a,n,int) sort(a,a+n,less<int>()) #define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> pii;
typedef char ch;
typedef double db; const double PI=acos(-1.0);
const double eps=1e-6;
const int inf=0x3f3f3f3f;
const int maxn=1e5+10;
const int maxm=100+10;
const int N=2e5+10;
const int mod=1e9+7; double P = 0;
double A = 0 , D = 0;
double Bestchoice = 0;
double T = 0;
double T_min = 1e9;
int main()
{
int t = 0;
int n = 0;
cin >> t;
while(t--)
{
Bestchoice = 0;
T = 0;
T_min = 1e9;
cin >> n;
for(int i = 0;i<n;i++)
{
cin >> A >> D;
T = D * ((100+A-1)/A - 1);
if(T == T_min)
{
Bestchoice += 1;
}
if(T < T_min)
{
T_min = T;
Bestchoice = 1;
}
}
P = (n-Bestchoice)/n + Bestchoice/(n*2);
cout << setprecision(2) << P <<endl;
}
return 0;
}
B - Blow up the Enemy的更多相关文章
- [LeetCode] Boom Enemy 炸弹人
Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return ...
- Leetcode: Bomb Enemy
Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return ...
- UVALive 7146 Defeat the Enemy(贪心+STL)(2014 Asia Shanghai Regional Contest)
Long long ago there is a strong tribe living on the earth. They always have wars and eonquer others. ...
- UVa 7146 Defeat the Enemy(贪心)
题目链接: 传送门 Defeat the Enemy Time Limit: 3000MS Memory Limit: 32768 KB Description Long long ago t ...
- cocos2dx游戏开发——微信打飞机学习笔记(七)——Enemy的搭建
一.文件创建~ Enemy.h Enemy.cpp 二.How to do? 由于我是已经完成成个游戏的功能,所以我会将游戏中enemy所需要的很多功能基本上都先考虑到了,如果大家自己在做的时候也许没 ...
- Unity3D学习笔记——选择Enemy
一.步骤: 1.创建三个Cube,并将这三个Cube的Cube的Tag设为Enemy 2.导入第一人称视角的资源 3.创建名为Targeting的C#脚本 4.编写Targeting脚本,并将它附到第 ...
- Defeat the Enemy UVALive - 7146
Long long ago there is a strong tribe living on the earth. They always have wars and eonquer other ...
- [LeetCode] Bomb Enemy 炸弹人
Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return ...
- LostRoutes项目日志——敌人精灵Enemy解析
Enemy类在Enemy.js中,类Enemy类继承自PhysicsSprite,以便于可以使用物理引擎中的一些特性. 原版的Enemy.js: var Enemy = cc.PhysicsSprit ...
- UVALive 4426 Blast the Enemy! 计算几何求重心
D - Blast the Enemy! Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Subm ...
随机推荐
- RBMQ案例二:工作队列模式
工作队列模式 工作队列(又名:任务队列)背后的主要思想是避免立即执行资源密集型任务而不得不等待它完成.相反,我们安排任务稍后完成.我们将任务封装 为消息并将其发送到队列.在后台运行的工作进程将弹出任务 ...
- Java stream sorted自定义排序规则实现多字段排序
Stream 提供了丰富的操作(中间操作和终端操作)集合元素的轮子,但Stream流操作不影响原始集合数据,执行结果是一个新的集合对象.在<Java stream sorted使用 Comp ...
- MySQL修改表和字段的字符集和排序规则
摘要:通过设置表的字符集和排序规则,解决MySQL查询时不区分字母大小写.插入时不支持特殊字符的问题. 关于MySQL查询时不区分字母大小写.插入时不支持特殊字符的问题,只有修改表的字符集和排序规 ...
- Spring注解之自定义注解入门
目录 前言 注解是什么 自定义注解 元注解 @Target @Retention @Documented @Inherited 结束语 Reference 前言 在业务开发过程中,Spring 框 ...
- 2024杭电钉耙2-1003 HDOJ7447 绝对不模拟的简单魔方
欢迎您来我的网站看这篇题解! Problem 有一个魔方可能被拧了不超过三次,同时还弄丢了一个角块上的两个贴纸.现在把这两个贴纸贴回去,请问有没有贴错? 只可能拧侧面,不会拧中间层,且每次只能拧 \( ...
- vitepress静态站点支持离线浏览器本地全文搜索功能
用vitepress来构建静态站点时都知道,如果页面多时都要在导航上面增加一个搜索功能. 搜索功能最常用的就是第三方的Algolia. 查了一下vitepress文档才知道,vitepress支持一个 ...
- 数栈技术分享:利用 Atomic 构建 React 项目工作流,so easy!
数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变 ...
- 技术干货 |看我如何来解Web Terminal假性输入框
编者按 写在前面的话 在介绍本篇文章的时候,先说一下本篇文章的一些背景.笔者是基于公司的基础建设哆啦 A 梦(Doraemon) (https://github.com/DTStack/doraemo ...
- SQL Server 链接服务器"XXXXXXX"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息 "没有活动事务。"。
一.确保互联双方服务器MS DTC服务已启动并正确配置 打开"服务"管理控制台(services.msc) 找到"Distributed Transaction Coor ...
- 如何获取上次BIOS所用时间
在Windows任务管理器的"启动应用"页签的右上角,有一个"上次BIOS所用时间",这个时间可以通过注册表项来获取,注册表位置如下 HKLM\SYSTEM\C ...