当前位置: 首页 > news >正文

【牛客】寒假训练营1 I-It‘s bertrand paradox. Again! 题解

传送门:It’s bertrand paradox. Again!
标签:随机

题目大意

有两个人分别用两种方式在二维平面上随机生成1e5个圆,每个圆上的每一个点(x,y)都满足-100<x<100且-100<y<100,现在将某个人生成的1e5个圆的圆心和半径告诉你,问你这个人是谁。两个人生成圆的方式分别为:(1)1、随机等概率地从开区间(-100,100)生成两个整数x,y。
2、随机等概率地从闭区间[1,100]中生成一个r。3、判断(x,y )为圆心、r为半径的圆是否满足要求,若不满足,返回步骤2重新生成r,若满足,则将该圆加入到结果中。(2)1、随机等概率地从开区间(-100,100)生成两个整数x,y,随机等概率地从闭区间[1,100]中生成一个r。2、判断(x, y)为圆心、r为半径的圆是否满足要求,若不满足,返回步骤1重新生成x,y,r,若满足,则将该圆加入到结果中。
输入:第一行一个正整数n=1e5,代表圆的总数。接下来n行每行三个整数x,y,r(-100<x,y<100,0<r<100),分别代表圆心的坐标和半径。
输出:如果这些圆是第一个人生成的,输出“bit-noob”,否则输出“buaa-noob”。

算法分析

  • 显然这题跟随机有关,我们只要暴力跑100个数据找规律就行了(不是)。好吧看来并不需要,因为这题实在太简单了。我们先看两种生成方法有什么区别,最明显的就是第一种方法要三步而第二种方法只要两步。观察多出来的一步我们会发现,第一种方法的圆心和半径是分开生成的,而第二种方法的圆心和半径是在同一步中同时生成的。
  • 因为两种方法都是随机的,所以都有可能生成不符合要求的圆。遇到这种情况,第一个人将半径重新生成直到圆符合要求,第二个人则是将整个圆重新生成,即圆心坐标和半径都替换。那么很容易看出,第一个人生成的所有的圆的圆心坐标都是一次确定的,只通过半径来调整圆的大小。所以他生成的1e5个圆的圆心位置是均匀分布在(-100,100)中的,这种情况下一些靠近边缘的圆的半径一定很小。
  • 第二种方法每次都生成一个圆心坐标、半径都随机的圆形,那么我们可以大胆地将每个圆半径都假设为其期望,再思考圆心的位置。半径为50的情况下,能符合条件的圆的圆心一定更靠近(0,0)。所以根据统计学的知识,两种方法生成的圆的圆心到(0,0)的距离的平均值一定不同,且第二种方法距离更小。
  • 那很显然存在一个标准值,如果圆心到原点的距离大于这个值就是第一种方法生成的,否则就是第二种方法生成的。要猜这个值也很简单,因为圆心在均匀分布的条件下到原点的距离期望是50根号2,也就是大概70左右,如果比这个值小很多那肯定是第二种方法生成的。保守估计在1e5的数据量下平均值不会比期望偏差超过10,故将标准值定为60。

代码实现

#include <iostream>
using namespace std;
#include <algorithm>
#include <cstring>
#include <map>
#include <iomanip>
#include <cmath>
map<pair<long long,long long>,bool> mp;
long long n,m,T;
int ans;
int main(){long long i,j,l,r,x,y,c,d,h,w,mid,t,sum=0;ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(i=1;i<=n;i++){cin>>x>>y>>c;sum+=sqrt(x*x+y*y);}sum/=n;if(sum<60)cout<<"buaa-noob";else cout<<"bit-noob";
}
http://www.lryc.cn/news/303311.html

相关文章:

  • 各种手型都合适,功能高度可定制,雷柏VT9PRO mini和VT9PRO游戏鼠标上手
  • sql建库,建表基础操作
  • 算法训练营day32,贪心算法6
  • CTR之行为序列建模用户兴趣:DIN
  • Java使用Redis实现分页功能
  • Qt标准对话框设置
  • 如何让Obsidian实现电脑端和安卓端同步
  • windows系统中jenkins构建报错提示“拒绝访问”
  • 服务器防火墙的应用技术有哪些?
  • 力扣:40. 组合总和 II
  • Java设计模式——责任链模式
  • c++面试
  • [ansible] playbook运用
  • MSSQL运用
  • linux命令--pidof
  • 计算机视觉发展的方向和潜在机会
  • Java Web(六)--XML
  • 智慧城市的新宠儿:会“思考”的井盖
  • Linux限定网络和工具环境下时间同步
  • SQL Server查询计划(Query Plan)——文本查询计划
  • 2024年2月的TIOBE指数,go语言排名第8,JAVA趋势下降
  • 机器人十大前沿技术(2023-2024年)
  • Spring: MultipartFile和File的区别
  • ncnn之三(补充):window环境下vs2022安装ncnn+protobuf
  • 第五篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:详细解读pyttsx3的`preprocess_text`函数文本预处理。
  • logback实践
  • 深入理解java虚拟机---自动内存管理
  • 粉笔规范词积累(文化发展)
  • 如何在Ubuntu部署Emlog,并将本地博客发布至公网可远程访问
  • Axios