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


    题目链接:戳这里

    题意:一个平面里有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
  • 相关阅读:
    HTML5然还在草案阶段
    简单的JS动态加载单体
    步步为营 C# 技术漫谈 五、事件与委托机制
    .NET简谈脚本引擎系列(一:认识脚本引擎)
    微软一站式示例代码库 6月再次更新14个新示例代码
    CLR(公共语言运行时)到底藏在哪?
    .NET简谈构件系统开发模式
    项目管理理论与实践系列文章索引
    .Net调试技巧
    Lucene.Net
  • 原文地址:https://www.cnblogs.com/zmin/p/9543630.html
Copyright © 2020-2023  润新知