摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1086这题是逐一判断某些线段是否相交,输出交点数目。在算法概览里看来的方法不知道怎么解不了。。最后只能用固定一条线段a,并以a的某一端点为向量的出发点,连接另一线段的两端点,得出的两个向量跟a线段的向量进行叉乘,两个叉乘结果再相乘,判断是否大于0,大于0就是线段b的两端点在a线段同侧,然后为了判断类似20 1 0 31 1 3 121 1 1 31 1 3 121 1 3 12 1 2 3这些情况,再固定线段b重复一次刚刚的做法最后两个结果都没大于0,也就表示不同侧,所以表示相交#includedouble 阅读全文
posted @ 2013-08-19 23:12 执着追求的IT小小鸟 阅读(223) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2036这是第一次求多边形面积,看了ppt自己写了这个模板代码这题涉及几个知识点:1,矢量叉乘,表示一个垂直于两个矢量的矢量,有方向,假设叉乘的两个矢量为a,b,a逆时针可以走到b,那么,a×b为正,反之为负2,叉乘过程:a(x1,y1),b(x2,y2),那么a×b=x1*y2-x2*y1;可以列出矩阵来求相乘结果。3,多边形可以化成几个三角形,然后逐一用矢量相乘取绝对值在平分为二得到结果,这是以多边形某一点来做的,而又可以在多边形内取一个点为扇点,连接每个顶点,然后计算每个三角形的面积再 阅读全文
posted @ 2013-08-19 16:16 执着追求的IT小小鸟 阅读(314) 评论(3) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2824筛法求素数,本来要打表,可是超内存,暴力居然没超时,,,对数据无语#includeint phi[3000010];int euler(){ int i,j; for(i=0;i<3000010;i++) phi[i]=0; for(i=2;i<3000010;i++) { if(!phi[i]) for(j=i;j<3000010;j+=i) { if(!phi[j])phi[j]=j; p... 阅读全文
posted @ 2013-08-19 09:38 执着追求的IT小小鸟 阅读(152) 评论(0) 推荐(0) 编辑