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

第一题,读懂题目,然后计算就很好说了. 第二题,计算最小公倍数的那种肯定是行不通的, 二分 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:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Google Code Jam 2015 Round1A 题解的更多相关文章

  1. Google Code Jam 2015 R1C B

    题意:给出一个键盘,按键都是大写字母.给出一个目标单词和一个长度L.最大值或者最大长度都是100.现在随机按键盘,每个按键的概率相同. 敲击出一个长度为L的序列.求该序列中目标单词最多可能出现几次,期 ...

  2. Google Code Jam 2015 R2 C

    题意:给出若干个句子,每个句子包含多个单词.确定第一句是英文,第二句是法文.后面的句子两者都有可能.两个语种会有重复单词. 现在要找出一种分配方法(给每个句子指定其文种),使得既是英文也是法文的单词数 ...

  3. Google Code Jam 2014 Qualification 题解

    拿下 ABD, 顺利晋级, 预赛的时候C没有仔细想,推荐C题,一个非常不错的构造题目! A Magic Trick 简单的题目来取得集合的交并 1: #include <iostream> ...

  4. [C++]Infinite House of Pancakes——Google Code Jam 2015 Qualification Round

    Problem It’s opening night at the opera, and your friend is the prima donna (the lead female singer) ...

  5. [C++]Standing Ovation——Google Code Jam 2015 Qualification Round

    Problem It’s opening night at the opera, and your friend is the prima donna (the lead female singer) ...

  6. [Google Code Jam (Qualification Round 2014) ] B. Cookie Clicker Alpha

    Problem B. Cookie Clicker Alpha   Introduction Cookie Clicker is a Javascript game by Orteil, where ...

  7. [Google Code Jam (Qualification Round 2014) ] A. Magic Trick

    Problem A. Magic Trick Small input6 points You have solved this input set.   Note: To advance to the ...

  8. [C++]Store Credit——Google Code Jam Qualification Round Africa 2010

    Google Code Jam Qualification Round Africa 2010 的第一题,很简单. Problem You receive a credit C at a local ...

  9. [C++]Saving the Universe——Google Code Jam Qualification Round 2008

    Google Code Jam 2008 资格赛的第一题:Saving the Universe. 问题描述如下: Problem The urban legend goes that if you ...

随机推荐

  1. 怒刷DP之 HDU 1024

    Max Sum Plus Plus Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  2. BZOJ 1050

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2593  Solved: 1399[Submit][St ...

  3. ASP.Net 验证控件 RegularExpressionValidator

    定义和用法 RegularExpressionValidator 控件用于验证输入值是否匹配指定的模式. 注释:除非浏览器不支持客户端验证或 EnableClientScript 属性被设置为 fal ...

  4. 移动端1px细线的处理

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 深入理解ThreadLocal(转)(2015年06月11日)

    注明:转自:http://my.oschina.net/clopopo/blog/149368 学习一个东西首先要知道为什么要引入它,就是我们能用它来干什么.所以我们先来看看ThreadLocal对我 ...

  6. C#传递参数

    与函数交换数据的最好方式就是传递参数,在C#中有四种方法来控制参数如何传递给目标方法 C#中的参数修饰符 无修饰 如果一个参数没有用参数修饰符,则认为它将按值传递 out 输出参数由被调用的方法赋值. ...

  7. Git之基本命令

    先介绍一下Git: Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前, ...

  8. Pure-ftpd无法连接到服务器 425错误

    今天是五一假期的前一天,闲来没事,打开自己的博客,发现很久没有备份数据了,由于工作方面的原因,自己慢慢的退出了技术界,但本人还是依然向往技术界啊!各位技术宅们,加油! 问题发现 当我打开FTP客户端软 ...

  9. ORACLE-树状数据结构获取各层级节点信息

    平时工作中出报表时,要求分别列出员工的一级部门,二级部门....,在数据库中,部门表(unit)的设计一般为在表中维护每个部门的上级部门(pid字段),或者通过一个关联表(unit_link)维护层级 ...

  10. 个人收集的iOS开源动画-----长期跟新

    1. KYAnimatedPageControl 链接:KYAnimatedPageControl KYAnimatedPageControl 不仅可以在你滑动UIScrollView的时候自动以动画 ...