原题:Gym-101810K

题意:

你能射出一个宽度为z的气功波,杀死所有边界及边界内的敌人,问n个点中是否可以杀死至少m个点

解析:

对于每个点都作为边界进行判断

  1. 如果距离原点比较远,那么把气功波的左边界按在这个点上
  2. 如果比较近,把气功波的下边界按在这个点上

我们通过这个边界求出下边界往左方向的单位向量

  1. 判断一个点是不是在两条左右边界内:点乘是否小于等于Z/2,就是判断在下边界的投影是否超出范围
  2. 判断是不是在下边界的上侧:判断(O,P)这个向量逆时针转到单位向量的角度是否小于等于Π

注意,因为精度问题,i==j的情况要拎出来

代码:


F eps=1e-8;
const F pi=acos(-1);
D read(){ D ans=0; char last=' ',ch=getchar();
while(ch<'0' || ch>'9')last=ch,ch=getchar();
while(ch>='0' && ch<='9')ans=ans*10+ch-'0',ch=getchar();
if(last=='-')ans=-ans; return ans;
}struct point{F x,y;point(){}point(F x,F y):x(x),y(y){}
};
typedef point Vector;
typedef point Point;
Vector operator + (Vector a, Vector b){//向量加法return Vector(a.x + b.x, a.y + b.y);
}
Vector operator - (Vector a, Vector b){//向量减法return Vector(a.x - b.x, a.y - b.y);
}
Vector operator * (Vector a, double p){//向量数乘return Vector(a.x*p, a.y*p);
}
Vector operator / (Vector a, double p){//向量数除return Vector(a.x / p, a.y / p);
}
int dcmp(double x){//精度三态函数(>0,<0,=0)if (fabs(x) < eps)return 0;else if (x > 0)return 1;return -1;
}
bool operator == (const Point &a, const Point &b){//向量相等return dcmp(a.x - b.x) == 0 && dcmp(a.y - b.y) == 0;
}
double Dot(Vector a, Vector b){//内积return a.x*b.x + a.y*b.y;
}
double Length(Vector a){//模return sqrt(Dot(a, a));
}
double Angle(Vector a, Vector b){//夹角,弧度制return acos(Dot(a, b) / Length(a) / Length(b));
}
double Cross(Vector a, Vector b){//外积return a.x*b.y - a.y*b.x;
}
Vector Rotate(Vector a, double rad){//逆时针旋转return Vector(a.x*cos(rad) - a.y*sin(rad), a.x*sin(rad) + a.y*cos(rad));
}
double Distance(Point a, Point b){//两点间距离return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y));
}int n,m;F z;
point p[1009],O;int main(){int t=read();while(t--){scanf("%d%d%lf",&n,&m,&z);z/=2.0;for(int i=1;i<=n;i++){scanf("%lf%lf",&p[i].x,&p[i].y);}int ans=0;for(int i=1;i<=n;i++){point l=p[i];//the endpointif(Length(l)>z)l=Rotate(l,acos(z/Length(l)));l=l/Length(l);int sum=1;for(int j=1;j<=n;j++)if(i!=j){if(z>=abs(Dot(p[j],l))){if(Cross(p[j],l)>=0)sum++;}}ans=max(ans,sum);}if(ans>=m)printf("Yes\n");else printf("No\n");}
}

League of Demacia(平面几何)相关推荐

  1. 基于平面几何精确且鲁棒的尺度恢复单目视觉里程计

    标题:Accurate and Robust Scale Recovery for Monocular Visual Odometry Based on Plane Geometry 作者:Rui T ...

  2. 2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final) 题解(10 / 13)

    2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final) 9题金 6题银 5题铜 题目比较简单,但是读题太难了- 比赛链接:htt ...

  3. Codeforce 1255 Round #601 (Div. 2) C. League of Leesins (大模拟)

    Bob is an avid fan of the video game "League of Leesins", and today he celebrates as the L ...

  4. 合流超几何函数_【初中数学大招流】从平面几何到解析几何

    写在前面: 本文适合初三学生: 本文所讲的方法,可供平时的学习开拓思维,考试时也许可以帮你得分,但请慎用! 创作不易,喜欢的话不要只收藏呀,双击屏幕有惊喜哦~ 2019.6.2 更新了一道例题& ...

  5. 2021牛客暑期多校训练营2 G.League of Legends(转化+单调队列)

    G.League of Legends Zechariah_2001题解 对于可以包含其他区间的大区间,要使得答案最优无非就是两种分组方式:单独一组或者与被包含的区间一组.单独一组那么贡献就是区间长度 ...

  6. threejs创建平面几何形状

    创建平面几何形状 平面几何形状有三种:点,线,面三种,下面说说用threejs创建这几种形状的方法. 创建点 创建点可以使用Points类. function createPoints(){//创建一 ...

  7. LEAGUE TABLES【模拟】

    LEAGUE TABLES 时间限制: 1 Sec 内存限制: 128 MB 提交: 349 解决: 150 [提交] [状态] [命题人:admin] 题目描述 League football (k ...

  8. 电竞高性能主机可以改云服务器吗,无缘主机平台 NBA 2K League电竞联赛将改用高性能PC...

    [17173新闻报道,转载请注明出处] 近日,从去年开始就传得沸沸扬扬的NBA 2K League电子竞技联赛现在终于有了最新进展,即今后该联盟举办的所有比赛都会在PC平台上进行,而非PS4或者Xbo ...

  9. 在unity向量空间内绘制几何(4): 利用平面几何知识画像素直线

    这两年像素很火,<我的世界>也要进入国内了. 问题:假如有一个像素平面,既是一个充满四方格子平面,给出任意两个格子的坐标,画出两个格子间的直线. 接下来,尝试在平面几何的角度下思考并解决这 ...

  10. Nitro League 出品 | P2E 系列 101——第三部分

    随着电子竞技和 iGaming 继续以指数速度增长,NFTs在区块链游戏的广阔世界中找到自己的方式只是时间问题.正如大多数数字事物的典型情况一样, NFT 的所有尖端创新都是在游戏行业发现的. 电子竞 ...

最新文章

  1. 微服务后如何做一次系统梳理
  2. Zookeeper的安装配置及基本开发
  3. Comparable接口和Comparator接口
  4. 根据字符串选择类并完成类的初始化--方法二
  5. 认识和入门 WebRTC
  6. 从3年前接触区块链,到开发出装机量最大客户端Geth,看看人家的职业发展之路 | 人物志...
  7. 不走寻常嵌入式开发路
  8. 一级域名二级域名区别
  9. Github删除历史提交记录的方法
  10. The APR based Apache Tomcat Native library which allows optimal performance in production 问题的解决
  11. 2022年全球程序员收入报告出炉:国内程序员人均56w年薪。。网友说:我拖后腿了!...
  12. LiveMe x TiDB丨单表数据量 39 亿条,简化架构新体验
  13. uclinux + nios (UCLinux在NIOS上的移植)
  14. linux使用单核_如何使用Linux还原单核计算机
  15. 论文笔记:Multi-level Alignment Network for Domain Adaptive Cross-modal Retrieval
  16. vue 使用fs_node.js 中的 fs 模块的使用
  17. 001-使用docker desktop for mac
  18. GO对接验证码短信接口DEMO示例
  19. 现在做哪个行业好赚钱
  20. 为什么“灵活用工”将成为影响企业寿命的关键?

热门文章

  1. zoj 3332 Strange Country II
  2. 运维工程师绩效考核表_IT运维绩效考核表
  3. Could not find method jackOptions() for arguments
  4. PhotoShop CS6 抠图教程
  5. 漫画:面试过程的神回复
  6. hdu 吉哥系列故事——完美队形 (最长公共子序列)
  7. Stata: 快速呈现常用分布临界值表
  8. 从 0 到 1,开发一个智能问答机器人
  9. 微软Win11与万物互联时代新系统需求更加迫切
  10. Android可收缩伸展的Expandable分组RecyclerView