码迷,mamicode.com
首页 > 其他好文 > 详细

2018大都会赛 A Fruit Ninja【随机数】

时间:2018-08-27 21:33:23      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:display   fine   const   https   and   技术   遍历   http   scanf   

题目链接:戳这里

题意:一个平面里有n个点,问存不存在一条直线上有m个点,满足m >= n*x。

解题思路:0<x<1,且x小数点后只有1位,也就是说10*m > n。假设存在一条直线满足条件,则任意一点在m中的概率>0.1,也就是说理论上随机10个点,一定有一个点在m上。所以随机一个点,遍历与其他点的斜率,斜率相同的点 + 该点本身 >= n * m,则符合条件。

附ac代码:

技术分享图片
 1 #include <iostream>
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 typedef long long ll;
 5 #define lson l,mid,rt<<1
 6 #define rson mid+1,r,rt<<1|1
 7 #define lef rt<<1
 8 #define rig rt<<1|1
 9 const int maxn = 2e5 + 10;
10 const ll mod = 998244353;
11 const ll inf = 0x3f3f3f3f;
12 const double eps = 1e-6;
13 struct nod
14 {
15     double x;
16     double y;
17 }coo[maxn];
18 
19 int main()
20 {
21     int t;
22     scanf("%d", &t);
23     double  x;
24     int n;
25     while(t--)
26     {
27 
28         scanf("%d %lf", &n, &x);
29         for(int i = 1; i <= n; ++i)
30         {
31             scanf("%lf %lf", &coo[i].x, &coo[i].y);
32         }
33         int cas = 20;
34         while(cas--)
35         {
36             map<double, double> mp;
37             int i = rand() % n + 1, j = 1;
38             for(j = 1; j <= n; ++j)
39             {
40                 if(i == j)continue;
41                 double u;
42                 if(fabs(coo[j].x - coo[i].x) < eps)
43                 {
44                     u = inf + 1.0;
45                     ++mp[u];
46                     if(mp[u] + 1.0 + eps > n * x)   break;
47                 }
48                 else
49                 {
50                     u = (coo[i].y - coo[j].y) / (coo[i].x - coo[j].x);
51                     ++mp[u];
52                     if(mp[u] + 1.0 + eps > n * x)    break;
53                 }
54             }
55             if(j <= n)  break;
56         }
57         if(cas > 0) puts("Yes");
58         else puts("No");
59     }
60     return 0;
61 }
View Code

 

2018大都会赛 A Fruit Ninja【随机数】

标签:display   fine   const   https   and   技术   遍历   http   scanf   

原文地址:https://www.cnblogs.com/zmin/p/9543630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!