• Google Code Jam 2015 Round1A 题解


    快一年没有做题了, 今天跟了一下 GCJ Round 1A的题目, 感觉难度偏简单了, 很快搞定了第一题, 第二题二分稍微考了一下, 还剩下一个多小时, 没仔细想第三题, 以为 前两个题目差不多可以晋级了. 切出去玩了一会, 大概剩半小时, 发现自己的排名逐渐快超 1k了, 果断决定搞出第三题的小数据. 然后简单的O(n^3)的枚举过了. 然后有惊无险的晋级了.

    RHW$Q]1Q{@7JG{XUC]}_`MT

    第一题,读懂题目,然后计算就很好说了. 第二题,计算最小公倍数的那种肯定是行不通的, 二分 t时刻 已经剪完了多少个, 正在剪的有多少个, 然后准备剪的有多少个, 然后二分.

    第三题, 其实当时已经想到了解决思路, 去掉点然后没有凸包就意味着极角排序之后, 删掉多少个中间元素, 可以让某两个极角序列的interval 大于 Pi. 复杂度就是 O(n^2lgn) nlgn是极角排序负责度, n是枚举每一个需要处理的点.

       1:  #include <bits/stdc++.h>
       2:  using namespace std;
       3:   
       4:  int n;
       5:  double x[3001], y[3001];
       6:  double pi = atan(1) * 4;
       7:   
       8:  int solve(vector <double> lis)
       9:  {
      10:      if(n == 1)
      11:          return 0;
      12:      lis.push_back(100);
      13:      int p = 0;
      14:      int ret = 1000000;
      15:      for(int i = 0; i < n; i++)
      16:      {
      17:          while(lis[p+1] <= lis[i] + pi - 1e-8)
      18:              p ++;
      19:          ret = min(ret, p - i);
      20:      }
      21:      return ret;
      22:  }
      23:   
      24:  void solve()
      25:  {
      26:      cin >> n;
      27:      cout << endl;
      28:      for(int i = 1; i <= n; i++)
      29:      {
      30:          cin >> x[i] >> y[i];
      31:      }
      32:      for(int i = 1; i <= n; i++)
      33:      {
      34:          vector <double> dir;
      35:          for(int j = 1; j <= n; j++)
      36:              if(i != j)
      37:              {
      38:                  double v = atan2(y[j] - y[i], x[j] - x[i]);
      39:                  dir.push_back(v);
      40:                  dir.push_back(v + 2 * pi);
      41:              }
      42:          sort(dir.begin(), dir.end());
      43:          cout << solve(dir) << endl;
      44:      }
      45:  }
  • 相关阅读:
    [RN] React Native 使用 react-native-camera 过程中报错 Found react-native-camera 'mlkit' but wasn't required.`
    [RN] React Native 拍照、从相册选择、录像的实现
    10月14日站立会议
    第四周PSP &进度条
    课堂站立会议学习
    10月13号站立会议
    10月12号站立会议
    10月11号站立会议
    10月10号站立会议
    10月9号站立会议
  • 原文地址:https://www.cnblogs.com/sosi/p/4437323.html
Copyright © 2020-2023  润新知