10 2015 档案
摘要:题目大意:求一个数N,给出C和S,表示有C个条件,每个条件有X 和 k,然后是该个条件的k个yi,即NmodX=yj,输出满足的最小的S个N,要求正整数。解题思路:tot为所有的k的乘积,也就是可以作为一组完整限定条件的可能数.当个tot较小可以用中国剩余定理处理,但是如果tot太大的话,可以通过枚...
阅读全文
摘要:题意:求sum(gcd(i,j),1枚举因数,更新其所有倍数求解。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std;10 const int...
阅读全文
摘要:差分数列+字符串处理题意:是让你判断一个整系数多项式的值是否一直都能被一个所给的正整数所整除。通过对差分数列的不断求导,我们可以发现,对于任意多项式P,我们只需要判断n从1到k+1是否满足就行了,其中,k为多项式P中的最高次数。可以先了解一下差分数列。 1 #include 2 #includ...
阅读全文
摘要:题意:给定M个数,每次可以插入序列一个数;再给N个数,表示在插入第几个数时输出一个数,第一次输出序列中最小的,第二次输出序列中第二小的……以此类推,直到输出N个数。分析:因为输出时是按照先输出最小的,再输出第二小这样的方式输出的,相当于依次输出一个有序序列中的值。但因为这个序列不是固定不变的,而是不...
阅读全文
摘要:水 1 #include 2 #include 3 #include 4 #include 5 #define LL long long 6 using namespace std; 7 8 int main() 9 {10 int t;11 int a,b;12 in...
阅读全文
摘要:题意:给出一个5个顶点的多面体以及多面体内一点P。求让 多面体不同的方式(即以不同的面)放在地面上,设这个着地的面为A,多面体重心在A上的投影为B,在保证B在A内部且距离A的各个边界不小于0.2的前提 下(否则这种放置方式就是不合法的),求P距离地面的最大最小距离为多少。思路:(1)判断两个点是不是...
阅读全文
摘要:题意:给两个凸包,凸包能旋转,求凸包重心之间的最短距离。思路:显然两个凸包贴在一起时,距离最短。所以,先求重心,再求重心到各个面的最短距离。三维凸包+重心求法重心求法:在凸包内,任意枚举一点,在与凸包其他一个面组成一个三棱锥。求出每个三棱锥的重心,把三棱锥等效成一个个质点,再求整体的重心。 1 #...
阅读全文
摘要:题意:给出空间两条线段,求距离。注意输出格式! 1 #include 2 #include 3 #include 4 using namespace std; 5 6 struct Point3 7 { 8 int x, y, z; 9 Point3(int x=...
阅读全文
摘要:题意:三维空间中,给出两个三角形的左边,问是否相交。面积法判断点在三角形内: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define clc(...
阅读全文
摘要:题意:有个矩形,左下角(0,0),左上角(L,W).思路:除了圆盘之外,本题的输入也是个PSLG,因此可以按照前面叙述的算法求出各个区域:只需把线段视为直线,用切割凸多边形的方法 :每次读入线段,切割所有块,最终得到若干凸多边形如何判断多边形是否与圆盘相交:如果多边形的边和圆周规范相交,圆盘和多边形...
阅读全文
摘要:题意:一条封闭折线将平面分成了若干个区域,按顺序给出折线各点的坐标,要求输出封闭折线的轮廓。 题解:用类似卷包裹的算法,先确定一个一定会被选中的点(x坐标最小,y坐标最小)作为起点,然后把可能是下一个极点(凸包顶点)的点都存起来,下一个极点有可能是当前点所在线段的前一个点和后一个点或当前点所在线段和...
阅读全文
摘要:题意:给定一些线段障碍,判断怪物能不能逃离到无穷远处。思路:从(0,0)点能否到无穷远处。用BFS搜索。那满足什么样的点符合要求,能加入到图中呢?遍历每个点,显然一开始已经在某些线段上的点要删去。再判断,两点之间的连线是否与其他线段有交。有则删去。这道题要注意如果两条线段重合,怎么办?延长每条线段,...
阅读全文
摘要:题意:一个凸边型,目标在凸边型内且最优。问最多删除几个点使目标暴露在新凸边型外面。思路:二分+半平面相交。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 struct Point 8 {...
阅读全文
摘要:题意:铁人三项赛,给定每个选手游泳,自行车,赛跑三个阶段的平均速度,不知道每段比赛的路程,询问当前这个选手能否胜利。思路:把题意转化为一个不等式,设比赛长度是1,如果i要战胜j,x、y分别是第一阶段和第二阶段的比赛长度: (x / ui + y / vi + (1-x-y) / wi) 0的形式,...
阅读全文
摘要:题意:求一个凸多边形中一点到边的最大距离。思路:转换成在多边形内部,到每边距离为d的直线所围成的内多边形是否存在。也就是,二分距离+半平面交。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #in...
阅读全文
摘要:题意:求所有正方形中两点距离最大值的平方值。思路:旋转卡壳法。分别用数组和vector存凸包时,旋转卡壳代码有所不同。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #in...
阅读全文
摘要:题意:给定两个点集,一个红点集,另一个蓝点集,询问,能否找到一条直线能,使得任取一个红点和蓝点都在直线异侧。思路:划分成两个凸包,一个红包,一个蓝包。两个凸包不相交不重合。1.任取一个凸包中的点不在另一个凸包中。2.任取一个凸包中的边与另一个凸包不相交。 1 #include 2 #includ...
阅读全文
摘要:题意:给出平面上的n个点,求一条直线,使得所有点在该直线的同一侧且所有点到该直线的距离和最小,输出该距离和。思路:要使所有点在该直线的同一侧,明显是直接利用凸包的边更优。所以枚举凸包的没条边,然后求距离和。直线一般式为Ax + By + C = 0.点(x0, y0)到直线的距离为 fabs(Ax0...
阅读全文
摘要:大意:有n块矩形木板,你的任务是用一个面积尽量小的凸多边形把它们包起来,并计算出木板站整个包装面积的百分比。思路:按照题意将所有矩形顶点坐标存起来,旋转时先旋转从中心出发的向量,求得各个坐标之后,求凸包即可。水。。。。 1 #include 2 #include 3 #include 4 #...
阅读全文
摘要:思路:小圆面是由小圆弧围成。那么找出每条小圆弧,如果小圆弧,在小圆弧中点上下左右进行微小位移的所得的点一定在一个小圆面内。 找到最后覆盖这个小点的圆一定是可见的。圆上的点按照相邻依次排序的关键量为极角(0,2PI) 用中心点代替圆弧本身是否被圆覆盖 1 #include 2 #include ...
阅读全文
摘要:题意:要求解答6个关于圆的问题。 1.给出三角形坐标求外接圆 2.给出三角形坐标求内切圆 3.给出一个圆心和半径已知的圆,求过点(x,y)的所有和这个圆相切的直线 4.求所有和已知直线相切的过定点(x,y)的已知半径的圆的圆心 5.给出两个不平行的直线,求所有半径为r的同时和这两个直线相切的圆 6....
阅读全文
摘要:题意:给定两条狗的行走路线,一直两条狗同时出发同时到达,问路途中的最远和最近距离。思路:先简化版本,如果甲乙都仅沿着两条线段向前跑,那么他们之间的最短和最长距离怎么算? 假设甲的速度向量为v1(速度向量指甲单位时间所走的位移向量),乙的速度向量为v2. 因为运动是相对的,可以把甲看成是静止的,乙运动...
阅读全文
摘要:题意:平面上有一个包含n个端点的一笔画,第n个端点总是和第一个端点重合,因此团史一条闭合曲线。组成一笔画的线段可以相交,但是不会部分重叠。求这些线段将平面分成多少部分(包括封闭区域和无限大区域)。分析:若是直接找出所有区域,或非常麻烦,而且容易出错。但用欧拉定理可以将问题进行转化,使解法变容易。欧拉...
阅读全文
摘要:题意:根据A,B,C三点的位置确定D,E,F三个点的位置。贴模板 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define clc(a,b) m...
阅读全文
摘要:题意:给定一棵树,求这个节点的所有子树中包括他本身与它互质的节点的个数.解题思路:题利用dfs序+容斥原理+前缀和性质解决。题目中要求每个结点,和多少个它的子结点互素。如果每次为了求一个点去跑一遍dfs,复杂度将是 O(N(N+M))。一定会超时。因此需要深入加以分析。注意到n的范围是10^5以内的...
阅读全文
摘要:首先推荐一篇介绍容斥原理很好的博客http://www.cppblog.com/vici/archive/2011/09/05/155103.html题意:求1~n中不能被给定m个数中任意一个数整除的数的个数。思路:n-sum(能被整除的个数)明显用容斥原理:如10 - 能被2整除的数的个数 - 能...
阅读全文
摘要:借用大牛的一张图片:模拟 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std; 10 const int MAXN...
阅读全文
摘要:题意:给你一百个点,找个以这些点为中心的最小的圆,使得这个圆恰好包含了n个点,而且这个圆的边界上并没有点解题思路:暴力枚举每个点,求出每个点到其他点的距离,取第n大的点,判断一下。 1 #include 2 #include 3 #include 4 #include 5 #include 6 us...
阅读全文
摘要:题意:凸包周长+一个完整的圆周长。因为走一圈,经过拐点时,所形成的扇形的内角和是360度,故一个完整的圆。模板题,之前写的Graham模板不对,WR了很多发。。。。POJ上的AC代码 1 #include 2 #include 3 #include 4 #include 5 #include 6 #...
阅读全文
摘要:题意:给定平面上的N个点,属性分别标记为0和1,然后找一条直线,直线上的点全部溶解,一侧的1溶解,另一侧的0溶解。求出最多能溶解的点的个数。思路:暴力枚举每个点,扫描线旋转。先做优化,如果一侧溶解0,则把属性为1的做关于当前枚举直线对称的点,这样统计一侧的点加上线上的点就是答案。O(n2). 1 #...
阅读全文