上一页 1 2 3 4 5 6 ··· 9 下一页

2008年9月8日

[计算几何]POJ 1266 三角形的外接圆 圆的参数方程

摘要: http://acm.pku.edu.cn/JudgeOnline/problem?id=1266 题目大意是给定一个圆弧上的3个点(先给2个端点,再给定圆弧中间的一个点),要求出覆盖此圆弧的最小矩形(矩形的4个角坐标必须为整数) 先由给定的3个点可以确定这个圆弧所在圆的圆心的半径,用三角形外接圆圆心公式(好长的公式啊): Code highlighting produced by ... 阅读全文

posted @ 2008-09-08 17:54 woodfish 阅读(1317) 评论(1) 推荐(0) 编辑

2008年9月5日

POJ 1026 置换群

摘要: http://acm.pku.edu.cn/JudgeOnline/problem?id=1026 如果按照题意,直接模拟,由于题目中没有给k的范围,有可能超时,其实数据中都是k非常大,所以这种算法行不通。 每一次操作相当于对序列进行一次置换,由置换群的知识可知,如该置换的阶为kk,则进行k次置换的结果与进行k%kk次置换的结果相同,因此可以先求出置换群的阶。 如果对于序列中的每个元素分别求出循环... 阅读全文

posted @ 2008-09-05 02:02 woodfish 阅读(1307) 评论(1) 推荐(0) 编辑

[计算几何]POJ 1031 计算点对多边形的偏转角度

摘要: 首先,由于题目可以得到dI=I0*|cosα|*dl*h 其中下,X1,X2为一条边的坐右端点,a为这条边对原点所张的角度 所以实际上本题是要求整个FENCE区域对原点所张开的总角度, 定义FENCE为一有向回路 那么每条边都是有向的。如果按照边的方向对原点所张开的角度为顺时针,那么定义为正,逆时针为负。并且每输入一条边就把本边对原点张开的角度计算进去加到一个数里去那么对于包含原点的区域。这... 阅读全文

posted @ 2008-09-05 00:07 woodfish 阅读(1088) 评论(0) 推荐(0) 编辑

2008年9月1日

[计算几何]POJ2079 求点集中面积最大的三角形

摘要: http://acm.pku.edu.cn/JudgeOnline/problem?id=2079 如果枚举3个点再算面积,必然超时。 很显然的最大面积的三角形的三个顶点必然是这个点集的凸包上的点,因此先求出凸包。 如果求出凸包仍然枚举,一样会超时。 这个可以借助求凸包直径类似的方法来求最大面积的三角形,使用旋转卡壳方法。 枚举三角形的第一个顶点i, 然后初始第二个顶点j=i+1,第三个顶点k... 阅读全文

posted @ 2008-09-01 21:48 woodfish 阅读(978) 评论(3) 推荐(0) 编辑

[计算几何]POJ3608 求2个不相交凸包的最短距离

摘要: http://acm.pku.edu.cn/JudgeOnline/problem?id=3608 本题要求不相交凸包的最短距离,可以利用旋转卡壳算法来做。首先让2个凸包的点都按逆时针方向排列,然后找出第一个凸包的y坐标最小的点a,第二个凸包的y坐标最大的点b,然后在a,b上做一条与x轴平行的直线,可以证明最短距离只有可能在这2条平行线之间取得。下面的工作就是沿着凸包来旋转这2条平行线了,在旋转的... 阅读全文

posted @ 2008-09-01 21:10 woodfish 阅读(1297) 评论(6) 推荐(0) 编辑

[计算几何]凸包的旋转卡壳算法

摘要: 由于凸包的优美性质,对于凸包上的很多最优化问题存在一种通用的旋转卡壳算法。比如求点集或凸包的直径,求点集中最大的三角形,求2个不相交凸包的最大距离以及最短距离等等。 这里有详细的资料。 http://cgm.cs.mcgill.ca/~orm/rotcal.html 阅读全文

posted @ 2008-09-01 21:02 woodfish 阅读(1333) 评论(0) 推荐(0) 编辑

2008年6月26日

C++禁止一个类被继承的技术

摘要: http://www.csse.monash.edu.au/~damian/Idioms/ Topics/04.SB.NoInherit/html/text.html 很巧妙 阅读全文

posted @ 2008-06-26 01:03 woodfish 阅读(489) 评论(0) 推荐(0) 编辑

2008年3月1日

C与汇编的接口技术

摘要: 1.保存寄存器 首先,C假定子程序保存了下面这几个寄存器的值:EBX,ESI,EDI,EBP,CS,DS,SS,ES。这并不意味着不能在子程序内部修改他们。相反,它表示如果子程序改变了它们的值,那么子程序返回之前必须恢复它们的原始值。EBX,ESI和EDI的值不能被改变,因为C将这些寄存器用于寄存器变量。通常都是使用堆栈来保存这些寄存器的原始值。 2.函数名 大多数C编译器都在函数名和全... 阅读全文

posted @ 2008-03-01 18:55 woodfish 阅读(1143) 评论(0) 推荐(0) 编辑

2008年2月29日

计算位数的3种方法

摘要: 方法1: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->int count_bits(unsigned int data) { int cnt=0; while(data!=0) { data=data&(data-1... 阅读全文

posted @ 2008-02-29 12:34 woodfish 阅读(852) 评论(1) 推荐(0) 编辑

2008年2月28日

避免使用条件分支

摘要: 现代处理器使用了非常尖端的技术来尽可能快的执行代码。一个普遍的技术称为预测执行。这种技术使CPU的并行处理能力来同时执行多条指令。条件分支与这项技术有冲突。一般来说,处理器是不知道分支是否会执行。 一个避免这个问题的方法就是如果可能尽量避免使用条件分支。在计算eax中比特位为1的例子中,一般会用一个分支跳转到INC指令(检查CF标志),下面展示了如何使用ADC指令直接加上进位标志来替代这个分支。 ... 阅读全文

posted @ 2008-02-28 10:55 woodfish 阅读(428) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 9 下一页

导航