摘要:
题意:平面上有n个点,一只蚂蚁从最左下角的点出发,只能往逆时针方向走,走过的路线不能交叉,问最多能经过多少个点。 思路:每次都尽量往最外边走,每选取一个点后对剩余的点进行极角排序。(n个点必定能走完,这是凸包的性质决定的) 阅读全文
摘要:
思路:枚举四边墙的门的中点,与终点连成一条线段,判断与其相交的线段的个数。最小的加一即为答案。 我是傻逼,一个数组越界调了两个小时。 阅读全文
摘要:
题意:n根木棍随意摆放在一个平面上,问放在最上面的木棍是哪些。 思路:线段相交,因为题目说最多有1000根在最上面。所以从后往前处理,直到木棍没了或者最上面的木棍的总数大于1000. 阅读全文
摘要:
思路:暴力判断每个点连成的线段是否被墙挡住,构建图。求最短路。 思路很简单,但是实现比较复杂,模版一定要可靠。 阅读全文
摘要:
题意:给两条直线,判断相交,重合或者平行 思路:判断重合可以用叉积,平行用斜率,其他情况即为相交。 求交点: 这里也用到叉积的原理。假设交点为p0(x0,y0)。则有: (p1-p0)X(p2-p0)=0 (p3-p0)X(p2-p0)=0 展开后即是 (y1-y2)x0+(x2-x1)y0+x1y 阅读全文
摘要:
题意:有n条线段,问有没有一条直线使得所有线段在这条直线上的投影至少有一个共同点。 思路:逆向思维,很明显这个问题可以转化为是否有一条直线穿过所有线段,若有,问题要求的直线与该直线垂直,并且公共点为垂足。 因此只需要枚举每两个端点形成的直线,判断是否和所有线段相交。证明,若存在一条与所有线段相交的直 阅读全文
摘要:
今天开始学习计算几何,百度了两篇文章,与君共勉! 计算几何入门题推荐 计算几何基础知识 题意:有一个盒子,被n块木板分成n+1个区域,每个木板从左到右出现,并且不交叉。 有m个玩具(可以看成点)放在这个盒子里,问每个区域分别有多少个玩具。 思路:首先,用叉积判断玩具是否在木板的左边,再用二分找到符合 阅读全文
摘要:
题意:求中互质的数的个数,其中。 分析:因为,所以,我们很容易知道如下结论 对于两个正整数和,如果是的倍数,那么中与互素的数的个数为 本结论是很好证明的,因为中与互素的个数为,又知道,所以 结论成立。那么对于本题,答案就是 事实上只要把素数的逆元用exgcd求一求就好,其余并未用到 逆元递推法: 扩 阅读全文
摘要:
题意:求A^B的所有因子之和 很容易知道,先把分解得到,那么得到,那么 的所有因子和的表达式如下 第一种做法是分治求等比数列的和 用递归二分求等比数列1+pi+pi^2+pi^3+...+pi^n: (1)若n为奇数,一共有偶数项,则: 1 + p + p^2 + p^3 +...+ p^n = ( 阅读全文
摘要:
求解方程组 X%m1=r1 X%m2=r2 .... X%mn=rn 首先看下两个式子的情况 X%m1=r1 X%m2=r2 联立可得 m1*x+m2*y=r2-r1 用ex_gcd求得一个特解x' 得到X=x'*m1+r2 X的通解X'=X+k*LCM(m1,m2) 上式可化为:X'%LCM(m1 阅读全文