Uva 4916 Selling Cells(随机算法)
题意:
给定n个圆的 坐标 和半径, 求第一个圆与其他圆相交的面积占第一个圆的面积的多大。
分析:
如果从局部去想, 处理每个圆之间的关系, 求出他们与第一个圆的交集, 这样可能就会十分复杂了。
不妨从总体去想, 因为答案要求的数字并不是十分精确(保留两位小数), 那么我们可以试试随机算法,
想象在第一个圆内撒绿豆, 那么绿豆肯定会落到第一个圆与其他圆相交的区域, 这时候统计一下撒的绿豆和在区域中的绿豆就可以大概算出这个数字了。
这里有个技巧是用
rand() /(double)(RAND_MAX/'num') 生成 0 ~ num 的浮点数 rand()/(double)RAND_MAX 就是生成一个0 ~ 1的浮点数
#include <bits/stdc++.h>
using namespace std;
const int maxn = + ;
int n; double x[maxn], y[maxn], r[maxn]; double p2pdis(double x1, double y1, double x2, double y2){
return sqrt((x1-x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
} int main(){
while(scanf("%d", &n) && n){
for(int i = ; i < n; i++){
scanf("%lf %lf %lf", &x[i], &y[i], &r[i]);
}
int time = 2e5;//设置最多循环次数, 在不超时的情况下设置的越大越好
int in = , tot = ;
while(time--){
double tx,ty;
tx = x[] + rand() /(double)(RAND_MAX/ (- * r[])) + r[]; // 令tx在x的半径内随机
ty = y[] + rand() /(double)(RAND_MAX/(- * r[])) + r[]; // 令ty在y的半径内随机
if(p2pdis(tx,ty,x[],y[]) <= r[]){//此时还要判断一下这个点,是否在圆内, 因为我们是在以圆点为中心的正方形内取点
tot++;//判断多少个点符合
for(int i = ; i < n; i++){
if(p2pdis(tx,ty,x[i],y[i]) <= r[i]){
in++;//判断多少个点在小圆内
break;
}
}
}
}
printf("%.2f\n",(double)in/tot);
}
}
Uva 4916 Selling Cells(随机算法)的更多相关文章
- 微信红包中使用的技术:AA收款+随机算法
除夕夜你领到红包了吗?有的说“我领了好几K!”“我领了几W!” 土豪何其多,苦逼也不少!有的说“我出来工作了,没压岁钱了,还要发红包”.那您有去抢微信红包吗?微信群中抢“新年红包”春节爆红.618微信 ...
- POJ 3318 Matrix Multiplication(随机算法)
题目链接 随机算法使劲水...srand((unsigned)time(0))比srand(NULL)靠谱很多,可能是更加随机. #include <cstdio> #include &l ...
- 抽奖随机算法的技术探讨与C#实现
一.模拟客户需求 1.1 客户A需求:要求每次都按照下图的概率随机,数量不限,每个用户只能抽一次,抽奖结果的分布与抽奖概率近似. 1.2 客户B需求:固定奖项10个,抽奖次数不限,每个用户只能抽一次, ...
- hdu 4712 (随机算法)
第一次听说随机算法,在给的n组数据间随机取两个组比较,当随机次数达到一定量时,答案就出来了. #include<stdio.h> #include<stdlib.h> #inc ...
- 权重随机算法的java实现
一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...
- hdu 4712 Hamming Distance ( 随机算法混过了 )
Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- HDU4712+随机算法
随机算法 求n个20位的2进制串的MinDist. Dist:两个串的异或结果中1的个数 /* 随机算法 */ #include<algorithm> #include<iostre ...
- LOJ #2540. 「PKUWC 2018」随机算法(概率dp)
题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...
- java 权重随机算法实现
import java.util.*; /** * 权重随机算法实现 * a b c d 对应权重范围 --- [0,1).[1,3).[3,6).[6,10) */ public class Ran ...
随机推荐
- python网络爬虫之三re正则表达式模块
""" re正则表达式,正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的 一些特定字符,及这些特定字符的组合,组成一个"规则字符串",然后用 ...
- [Usaco2017 Feb]Why Did the Cow Cross the Road II (Platinum)
Description Farmer John is continuing to ponder the issue of cows crossing the road through his farm ...
- [POI2008]KUP
Description 给一个\(n\times n\)的地图,每个格子有一个价格,找一个矩形区域,使其价格总和位于[k,2k] Input 输入k n(n<2000)和一个\(n\times ...
- _bzoj1061 [Noi2008]志愿者招募【最小费用最大流】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1061 尽管不是mcmf的裸题,但还是保存一下模版叭~ 很好的一道建模的题,把变量间的加加减减 ...
- html下的图片链接有边框的解决方法
使用dreamweaver创建网页后,上传到网站发现网页的图片链接有非常难看的蓝色边框,而在dw下是没有的 后来查看了一下网上的资料,发现加一个border="0"即可,默认是有边 ...
- outlook 通讯录分类--2017年1月16日--对联系人分类管理
outlook功能多,复杂,导致打开界面就晕,通讯录分类 问:在Outlook 中,随着联系人数量的增多,亲朋好友.同事.客户的信息混杂在一起,每次发邮件都要用很长时间才能从联系人列表中找到需要的人. ...
- vue采坑及较好的文章汇总
1:父子组件传动态传值 https://www.cnblogs.com/daiwenru/p/6694530.html -----互传数据基本流程 https://blog.csdn.net/qq_ ...
- js的replace函数把"$"替换成成"\$"
var aa = 18$ 转换成 aa = 18\$ aa.replace("\$","\\\$"); 注意JS的replace方法只能替换第一 ...
- js对象数组深度去重和深度排序
使用collect.js处理数组和对象 https://github.com/ecrmnn/collect.js/# 引入collect.js https://github.com/ecrmnn/co ...
- VUE 入坑系列 一 事件
html代码 <div id="app"> <button v-on:click="counter += 1">加1</butto ...