Darts 题解
附原题:
题目描述
考虑一个扔飞镖的游戏。板子由十个环组成,半径分别为20, 40, 60, 80, 100, 120, 140, 160, 180和200(单位:mm),均以原点为中心。每次投掷的得分取决于飞镖所击中的位置。如果包含飞镖的最小环(可以在圆上)的半径是20 * (11 - p),则得分是p。不在最外环以内的点不得分。你的任务是计算n次投掷之后的得分。
输入
第一行一个正整数T,表示有T组数据。
每组数据第一行一个正整数n,表示有n次投掷,1 <= n <= 10^6。
接下来n行,每行两个整数x和y,表示一次投掷击中的位置为(x, y),-200 <= x, y <= 200。
输出
对于每组数据输出一行,即n次投掷得分的总和。
样例输入
1
5
32 -39
71 89
-60 80
0 0
196 89
样例输出
29
首先来看一看这一题,可以说是一道模拟题了,但是先给大家灌输一下勾股定理,在来做一下这一道题目。勾股定理
其实,就是a²+b²=c²了,首先写下一个最基础的步骤:获得这个点到圆心的距离。
double gs(int a,int b){ a=abs(a); b=abs(b); double x,y; x=a*a; y=b*b; return sqrt(x+y); }
但是,有以下几点需要注意:
1.记住,输入的可能是负数,所以abs不可少
2.记住,注意sqrt是浮点数
3.记住,不要写太长的表达式,自己看都不方便
4.记住,类型以及局部变量和全局变量的改变
要知道,模拟的精髓是寄存器优化和细节
接下来是关键部分 gc(得到这个距离的得分)
这个是我的代码 (简单好理解的O1算法)
int gc(double s){ if(200<s) return 0; if(180<s&&s<=200) return 1; if(160<s&&s<=180) return 2; if(140<s&&s<=160) return 3; if(120<s&&s<=140) return 4; if(100<s&&s<=120) return 5; if(80<s&&s<=100) return 6; if(60<s&&s<=80) return 7; if(40<s&&s<=60) return 8; if(20<s&&s<=40) return 9; if(s<=20) return 10; }
还是要注意这个double
最后注意多组测试数组,要把ans清零。
其他就没有什么了,但是细节细节细节(重要的事情说三遍)
最后,献上AC代码:
#include<cstdio> #include<cmath> using namespace std; int T; int a,b,sum,n; double gs(int a,int b){ a=abs(a); b=abs(b); double x,y; x=a*a; y=b*b; return sqrt(x+y); } int gc(double s){ if(200<s) return 0; if(180<s&&s<=200) return 1; if(160<s&&s<=180) return 2; if(140<s&&s<=160) return 3; if(120<s&&s<=140) return 4; if(100<s&&s<=120) return 5; if(80<s&&s<=100) return 6; if(60<s&&s<=80) return 7; if(40<s&&s<=60) return 8; if(20<s&&s<=40) return 9; if(s<=20) return 10; } int main(){ scanf("%d",&T); while(T--){ sum=0; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d",&a,&b); double k=gs(a,b); sum+=gc(k); } printf("%d\n",sum); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具