2011年3月16日

[Tyvj1464]最远点对

摘要: 【题目分析】:先凸包然后旋转卡壳。Master_Chivu说其实面积可以用叉积计算……然后我听了恍然大悟……因为我一直拿海伦公式算……传送门1:http://cgm.cs.mcgill.ca/~orm/rotcal.frame.html传送门2:http://blog.csdn.net/kaytowin/archive/2010/01/06/5140111.aspx传送门3:http://www.cppblog.com/staryjy/archive/2010/09/25/101412.html【Code】:const eps=1e-12;type point=record x,y:int64 阅读全文

posted @ 2011-03-16 15:57 Skywalker_Q 阅读(390) 评论(0) 推荐(0)

[Tyvj1462]凸多边形

摘要: 【题目分析】:还是很裸的凸包,Master_Chivu的数据eps要1e-12.【Code】:const eps=1e-12;type point=record x,y:extended; end;var p,q:array[0..200000]of point; n,m,i,k:longint; ans:extended;procedure qsort(l,r:longint); var i,j:longint; t:point; x,y:extended; begin i:=l; j:=r; x:=p[(l+r)>>1].x; y:=p[(l+r)>>1].y; r 阅读全文

posted @ 2011-03-16 14:41 Skywalker_Q 阅读(289) 评论(0) 推荐(0)

[Tyvj1457]多边形统计

摘要: 【题目分析】:很裸的凸包,数据还很弱……【Code】:type point=record x,y:extended; end;var p,q:array[0..100]of point; n,m,i,k:longint; ans:extended;procedure qsort(l,r:longint); var i,j:longint; t:point; x,y:extended; begin i:=l; j:=r; x:=p[(l+r)>>1].x; y:=p[(l+r)>>1].y; repeat while (p[i].x<x) or (p[i].x=x) 阅读全文

posted @ 2011-03-16 14:21 Skywalker_Q 阅读(246) 评论(0) 推荐(1)

[NOI2010]能量采集

摘要: 【题目分析】算法一:位于(x,y)的点产生的分值是:Gcd(x,y);问题转换成求Gcd(x,y)。答案为Σ(gcd(x,y)*2-1),枚举x和y即可以得到80分。时间复杂度O(n^2logn)算法二:考虑Gcd(x,y)=D,D<=10^5范围不是很大,那么我们倒过来考虑,我们求解满足Gcd(x,y)=d的(x,y)的个数。有Σ(gcd(x,y)*2-1)=Σ(F[d]*(d*2-1));其中F[d]表示满足Gcd(x,y)=d的(x,y)的个数。考虑以d为公约数的(x,y)的个数g[d],显然有g[d]=[n/d]*[m/d];根据容斥原理有:f[d]=g[d]-Σ(f[d*i]) 阅读全文

posted @ 2011-03-16 13:32 Skywalker_Q 阅读(2613) 评论(0) 推荐(1)

凸包——扫描法(水平序)

摘要: {ID:tomson12PROG:fcLANG:PASCAL}type point=record x,y:extended; end;const maxn=10001;var p,ch:array[0..maxn]of point; n:longint;procedure init; var i:longint; begin readln(n); for i:=1 to n do readln(p[i].x,p[i].y); end;procedure swap(var a,b:point); var t:point; begin t:=a; a:=b; b:=t; end;procedure 阅读全文

posted @ 2011-03-16 10:20 Skywalker_Q 阅读(547) 评论(0) 推荐(2)

导航