专栏文章
题解:CF1599C Bubble Strike
CF1599C题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mioxhe70
- 此快照首次捕获于
- 2025/12/03 02:45 3 个月前
- 此快照最后确认于
- 2025/12/03 02:45 3 个月前
思路
分类讨论。设学过的地图个数为 ,则选到自己学过的地图的情况分为以下几类(为了方便表述,将“学过的地图”称为 A 地图,反之称为 B 地图):
- 随机抽到了 张 A 地图,概率为 ;
- 随机抽到了 张 A 地图,此时我们可以扔去那一张 B 地图,必定可以,概率为 ;
- 随机抽到了 张 A 地图,概率为 。
对 3. 中 含义的解释如下:
首先自己会选择扔去 张 B 地图之一,称为 X,剩下的那一张 B 地图称为 Y。我们可以将对手的选择看成是随机的,则他有 的概率选中 X 扔去,然后系统有 的概率选中 A 地图;有 的概率选中 Y 扔去,此时必定可以;有 的概率选中 A 地图扔去,此时必定不可以。故对于某一种符合 3. 条件的地图随机抽取,选中 A 地图的概率为 。
由于 的范围很小,故可以枚举 逐一检验。
Code
CPP#include<bits/stdc++.h>
using namespace std;
typedef long double LD;
int C3(int x){return x*(x-1)*(x-2)/6;}
int C2(int x){return x*(x-1)/2;}
int main(){
int n;LD p;
cin>>n>>p;
for(int x=0;x<=n;x++)
if(LD(C3(x)+C2(x)*(n-x)+LD(x*C2(n-x))/2)/C3(n)>=p)
cout<<x,exit(0);
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...