题意:

给出两个半径R,r,R表示第一次的大圈半径,r表示第二次的小圈半径。第一次大圈的圆心位于(0,0),第二次小圈的圆心未知,但在大圈内,给你一个n,然后给出n个屋子的位置,问这些屋子中,第二次在小圈的概率最大的屋子有几个,都是哪些。

思路:

首先分析到如果小圈是一个很小很小的圈,那么靠近原点的区域的这些点的概率是一样的,因为都可以使小圈360度绕着这个点旋转。那么接着分析,如果小圈是个较大的圆,那么原点(0,0)可能是100%被包含的,那么就要找到这个临界情况,发现当R=2*r时,原点是恰好100%被包括的。那么这道题就可以解了。
注意输出,行末没空格。

代码:

#include <iostream>
#include <cstdio>
#include <cmath> using namespace std;
double eps=1e-; struct Point
{
double x,y,dis;
}a[];
int ans[]; int main()
{
int t,n;
double R,r;
cin>>t;
while(t--)
{
scanf("%d%lf%lf",&n,&R,&r);
double ansr;
if(R>=*r)
ansr=R-*r;
else ansr=*r-R;
int j=,flag=;
double maxn=;
for(int i=;i<n;i++)
{
scanf("%lf%lf",&a[i].x,&a[i].y);
a[i].dis=sqrt(a[i].x*a[i].x+a[i].y*a[i].y);
if(a[i].dis<maxn)
maxn=a[i].dis;
if(a[i].dis<=ansr)
{
flag=;ans[j++]=i+;
}
}
if(flag)
{
printf("%d\n%d",j,ans[]);
for(int i=;i<j;i++)
printf(" %d",ans[i]);
printf("\n");
}
else
{
int j=;
for(int i=;i<n;i++)
{
if(fabs(a[i].dis-maxn)<eps)
ans[j++]=i+;
}
printf("%d\n%d",j,ans[]);
for(int i=;i<j;i++)
printf(" %d",ans[i]);
printf("\n");
}
}
return ;
}

2017CCPC秦皇岛 M题Safest Buildings&&ZOJ3993【复杂模拟】的更多相关文章

  1. 2017 CCPC秦皇岛 M题 Safest Buildings

    PUBG is a multiplayer online battle royale video game. In the game, up to one hundred players parach ...

  2. 2017CCPC秦皇岛 A题Balloon Robot&&ZOJ3981【模拟】

    题意: 一个机器人在长为M的圆形轨道上送气球,当机器人到达M号点的时候下一站会回到1号点,且全程不会停止运动.现在在长为M的轨道上有N个队伍,队伍会在某个时间做需要一个气球,机器人需要送过去.一共有P ...

  3. 2017CCPC秦皇岛 C题Crusaders Quest&&ZOJ3983【模拟+STL】

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3983 题意: 给定9个血槽,有三种物品,每次可以把连续相同的物品抵消 ...

  4. 2017CCPC秦皇岛 L题One-Dimensional Maze&&ZOJ3992【模拟】

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3992 题意: 走迷宫,一个一维字符串迷宫,由'L'.'R'组成,分别 ...

  5. 2017CCPC秦皇岛 H题Prime Set&&ZOJ3988

    题意: 定义一种集合,只有两个数,两个数不同且加起来为素数.要从n个数里抽出数字组成该集合(数字也可以是1~n,这个好懵圈啊),要求你选择最多k个该种集合组成一个有最多元素的集合,求出元素的数量. 思 ...

  6. 2017CCPC秦皇岛 G题Numbers&&ZOJ3987【大数】

    题意: 给出一个数n,现在要将它分为m个数,这m个数相加起来必须等于n,并且要使得这m个数的或值最小. 思路: 从二进制的角度分析,如果这m个数中有一个数某一位为1,那么最后或起来这一位肯定是为1的, ...

  7. 2017CCPC秦皇岛 E题String of CCPC&&ZOJ3985【模拟】

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985 题意: 给定一个字符串,由c和p组成,可以添加c或者p. 串中出现一 ...

  8. ZOJ 3981 && 2017CCPC秦皇岛 A:Balloon Robot(思维题)

    A - Balloon Robot Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Sub ...

  9. 2017CCPC秦皇岛

    热身赛 B题 Smartphone: 大整数相乘 Time Limit: 1 Second Memory Limit: 65536 KBHelianthuswolf Co. Ltd. is a mul ...

随机推荐

  1. 时间复杂度和大O表示法

    大O表示法:称一个函数g(n)是O(f(n)),当且仅当存在常数c>0和n0>=1,对一切n>n0均有|g(n)|<=c|f(n)|成立,也称函数g(n)以f(n)为界或者称g ...

  2. 1062.Talent and Virtue

    About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...

  3. TODO 软件测试68题

    白盒和黑盒的区别,你是怎么运用的?√  都是在debug的时候用的.没有实践过真正的白盒. 你是如何做测试分析?√  主要从功能的实现和性能问题上入手,功能的话以需求和实际使用的流程来分析,性能的话以 ...

  4. PHP生成四角图片

    <?php /** 圆角 $radius = 100; $img = imagecreatetruecolor($radius, $radius); // 创建一个正方形的图像 $bgcolor ...

  5. java类文件

    一个.java文件中可以有很多类.不过注意以下几点: 1.public 权限的类只能有一个(也可以一个都没有,但最多只有1个) ,其他的类不能加public. 2.这个.java文件的文件名必须是pu ...

  6. diff和patch

    diff -u:the unified format会将不同的地方放在一起,紧凑易读 . diff original.txt updated.txt c表示在original文件中的m,n行的内容将要 ...

  7. (栈)leetcode496. Next Greater Element I

    You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of n ...

  8. sed 的|

    #!/bin/bash/etc/init.d/nginx start && \sed -i "s|/project/env/|/${PROJ}/${ENVT}/|g" ...

  9. vim: 基本知识;

    1. 函数: function!   funcName(para.) content; endfunction 如果添加!,将覆盖已存在的重名函数: 注: 该博文为扩展型: 2.调用外部命令: exe ...

  10. 【转载】Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...