Stars 坐标旋转

Posted on 2010-07-03 11:00 王之昊 阅读(263) 评论(0)  编辑 收藏 引用 所属分类: 2:30

Stars


题意:
给你一副星座地图,还有若干星座,对于每个星座,寻找他在地图中出现的次数。其中允许旋转和缩放,若某个星座在地图上的两个映射A,B所包含的点集是一样的,则A,B算一次。

      大致思路是取出星座的第一,第二点,然后枚举这两个点在地图中的位置,将其他的点旋转过去检查是否合法。计算出次数S。

       然后在类似的计算出星座在自身中重复出现的次数B,最后答案为S / B
      
在具体实现上有几个问题:

  • 取整函数的写法:
double round(double d)
{
    return floor(d + 0.5);
}

  • 最开始的速度很慢,分析原因有:
  1. 用了vector,导致变慢, vector确实是慢了,改成数组 1000ms-->204ms
  2. 用了map和set导致变慢,将map改成手写的hash,204ms-->110ms
    • 遇到段错误,结果发现是数组越界,数组越界有上越界(比如数组开小了)和下越界(比如下标为负)

    只有注册用户登录后才能发表评论。
    网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


    posts - 26, comments - 7, trackbacks - 0, articles - 17

    Copyright © 王之昊