题面:

题目意为,任意连接两个圆的圆心形成一条直线,计算与该直线相交或相切的圆的数量,求这些直线最多能相交或相切多少个圆

解题思路:

遍历所有的圆,计算出两圆圆心生成的直线,再遍历其他的圆,检测这些圆的半径与圆心到直线的距离,即可确认直线与圆的关系。

坑点:

用函数思路解决时,需考虑斜率不存在问题(用向量解决即可规避该问题)

所有圆均为同心圆时,需特判(比赛测试数据并未考虑该特殊情况,赛后由广州大学的一位大佬发现,特此感谢)

标程:

出题时分别用函数的方法和向量的方法手搓了两份代码,最后用的标程是用kuangbin模板写的

向量的方法精度比函数的方法精度要高,但为降低难度还是放宽了精度的范围(大师兄说年轻人不能太毒瘤)

 #include <iostream>
#include <cmath>
using namespace std;
const double eps=1e-;
const double inf =1e20;
//const double pi=acos(-1.0);
int sgn(double x){
if(fabs(x)<eps) return ;
if(x<) return -;
else return ;
}
struct Point{
double x,y;
Point(){}
Point(double _x,double _y){
x=_x;
y=_y;
}
void input(){
scanf("%lf%lf",&x,&y);
}
bool operator ==(Point b)const{
return sgn(x-b.x)==&&sgn(y-b.y)==;
}
Point operator -(const Point &b)const{
return Point(x-b.x,y-b.y);
}
double operator ^(const Point &b)const{
return x*b.y-y*b.x;
}
double distance(Point p){
return hypot(x-p.x,y-p.y);
}
};
struct Line{
Point s,e;
void input(){
s.input();
e.input();
}
double length(){
return s.distance(e);
}
double dispointtoline(Point p){
return fabs((p-s)^(e-s))/length();
}
};
struct circle{
Point p;
double r;
void input(){
p.input();
scanf("%lf",&r);
}
bool operator ==(circle v){
return (p==v.p);
}
int relationline(Line v){
double dst=v.dispointtoline(p);
if(sgn(dst-r)<) return ;
else if(sgn(dst-r)==) return ;
else return ;
} };
int main(){
int n,ans(),cou,flag();
circle cir[];
Line line1;
cin>>n;
for(int i=;i<n;i++) cir[i].input();
for(int i=;i<n;i++){
if(cir[i]==cir[]&&i==n-)flag=;
}
if(flag){
cout<<n<<'\n';
return ;
}
for(int i=;i<n;i++){
for(int j=;j<n;j++){
cou=;
if(i==j) continue;
line1.e=cir[i].p;
line1.s=cir[j].p;
for(int k=;k<n;k++){
if(k==i||k==j) continue;
if(cir[k].relationline(line1)!=) cou++;
}
ans=max(ans,cou);
}
}
cout<<ans<<'\n';
return ;
}

最后非常抱歉出题时没有考虑到同心圆的特殊情况,导致测试数据不够完善,特此致歉。

2019年广东外语外贸大学程序设计竞赛(新手赛)-F题(好快的刀)题解的更多相关文章

  1. 第十四届浙江财经大学程序设计竞赛重现赛--A-A Sad Story

    链接:https://www.nowcoder.com/acm/contest/89/A 来源:牛客网 1.题目描述 The Great Wall story of Meng Jiangnv’s Bi ...

  2. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 F - 打铁的箱子

    题目描述 作为彩虹岛上最擅长打铁的人,

  3. 2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解

    2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解 update10.01 突然发现叉姐把这场的题传到牛客上了,现在大家可以有地方提交了呢. 不知道该干什么所以就来水一篇题解 ...

  4. A. Srdce and Triangle--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)

    如下图这是“今日头条杯”首届湖北省大学程序设计竞赛的第一题,作为赛后补题 题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 Let  be a regualr tr ...

  5. 2013年山东省第四届ACM大学生程序设计竞赛-最后一道大水题:Contest Print Server

    点击打开链接 2226: Contest Print Server Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 53  Solved: 18 [Su ...

  6. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 F题 Clever King(最小割)

    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...

  7. 2019广东外语外贸大学CTF新手赛-密码学-RSA题解

    题面 n=100000463700003241 e=17 密文: 分析: 题面已明示是RSA加密,已公开n与公钥e,n为1e18内的数字(64位).要爆破RSA,显然是先分析n的值. n的值是由两个素 ...

  8. D. Who killed Cock Robin 湖北省大学程序设计竞赛

    链接:https://www.nowcoder.com/acm/contest/104/C来源:牛客网 The Sparrow is for trial, at next bird assizes,w ...

  9. 2018年第十届ACMICPC四川省大学程序设计竞赛

    ..拿金了 没给学校丢脸 A ....SB题啊 比赛的时候都没看 裸的一个bitset前缀和 先开一个1e4*1e4的二维bitset数组 初始第i个数组的值为1 << i (即B[i]= ...

随机推荐

  1. SpringBoot学习(五)RSocket和Security

    一.RSocket RSocket是一个用于字节流传输的二进制协议.它通过在单个连接上传递异步消息来支持对称交互模型,主要支持的通讯层包括 TCP, WebSockets和Aeron(UDP). RS ...

  2. springcloud(二)

    springcloud路由网关 一.什么是网关 Zuul的主要功能是路由转发和过滤器.路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务.zu ...

  3. dbt 0.13.0 新添加特性sources 试用

    dbt 0.13 添加了一个新的功能sources 我呢可以用来做以下事情 从基础模型的源表中进行数据选择 测试对于源数据的假设 计算源数据的freshness source 操作 定义source ...

  4. matrix67中适合程序员的例子

    交互式证明:http://www.matrix67.com/blog/archives/6572 捡石子游戏(移动皇后问题):http://www.matrix67.com/blog/archives ...

  5. shell脚本编程基础之while、for、until循环

    while及until循环结构 while CONDITION:do statement done 进入循环:条件满足 退出循环:条件不满足 当需要命令的执行状态返回值时,可以直接把整个命令当做循环的 ...

  6. Java-Long类型精度丢失问题

    问题 今天碰到一个问题,后端需要返回给前端Long类型的id,前端收到的id会发生精度丢失. 测试代码:后端返回的值为344739147160346624 但是前端获取的值为: 解决办法 将返回的值转 ...

  7. TRUNCATE、Drop、Delete 的用法

    //Truncate是一个能够快速清空资料表内所有资料的SQL语法.并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用. truncate table1; drop table1; dele ...

  8. 【2019.11.06】SDN上机第2次作业

    参考资料网址:https://www.cnblogs.com/TITIN24/p/11794970.html 利用mininet创建如下拓扑 要求拓扑支持OpenFlow 1.3协议,主机名.交换机名 ...

  9. MAC 隐藏功能

    finder 类: shift+ cmd + G  (去指定路径) cmd+↑ (返回) cmd+↓(打开当前选中的文件,如果没有选中的则去选中第一个) cmd+ o (打开当前选中的文件) 以下这些 ...

  10. Hadoop综合大作业1

    本次作业来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3363 一.课程评分标准: 分数组成: 考勤 10 平时作业 30 爬 ...