2020.04.06 UCF Local Programming Contest 2017

Posted emhhbw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020.04.06 UCF Local Programming Contest 2017相关的知识,希望对你有一定的参考价值。

E题:Opposites Attract

题目链接:https://nanti.jisuanke.com/t/44821

题目大意:

题目明确了圆盘上各块的得分,给出m(t)个点,问这些点在圆盘上的分数总和。

思路:

一个2π的圆,可以想到用弧度来确定点的位置(一开始做的时候用的角度,却WA了),弧度就是atan(x,y)  如果再除以 π,就可以简化,注意单独讨论点在y轴的情况。

解题代码:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <cmath>
 5 #include <string>
 6 #include <cstring>
 7 #include <map>
 8 using namespace std;
 9 typedef long long ll;
10 const double PI=3.1415926;
11 map <char,int> ma;
12 int main()
13 {
14    ll t;
15    cin >> t;
16    while(t--)
17    {
18        ll n,m,sum = 0;
19        double r1,r2,r3;
20        cin >> n >> r1 >> r2 >> r3 >> m;
21        for(int i = 0;i < m;i++)
22        {
23            double x,y,l,o;
24            cin >> x >> y;
25            l = hypot(x,y);
26            if(l > r3)
27               continue;
28            else if(l < r1)
29               sum += 50;
30            else
31            {
32                if(x == 0)
33                {
34                    if(y > 0)
35                      o = 0.5;
36                    else
37                      o = 1.5;
38                }
39                else
40                {
41                    o = atan(y/x) / PI;
42                    if(x > 0 && y < 0)
43                        o = 2.0 + o;
44                    else if(x < 0 && y < 0)
45                        o = 1.0 + o;
46                    else if(x < 0 && y > 0)
47                        o = 1.0 + o;
48                    double num = 1, one = 2.0/n;
49                    while(o - one > 0)
50                    {
51                        num ++;
52                        one += 2.0/n;
53                    }
54                    if(l < r2)
55                       sum += num*2;
56                    else
57                       sum += num;
58                }
59            }
60 
61        }
62        cout << sum << endl;
63 
64    }
65 }

 

以上是关于2020.04.06 UCF Local Programming Contest 2017的主要内容,如果未能解决你的问题,请参考以下文章

UCF Local Programming Contest 2015

UCF Local Programming Contest Round 1A 训练联盟暑假场1 题解

UCF Local Programming Contest 2012(Practice)补题

UCF Local Programming Contest 2016正式赛

UCF Local Programming Contest 2016 3.29

UCF Local Programming Contest 2015(Practice)个人分析