摘要: 题意:在一个平面上,有若干个球,给出球的坐标,每次可以将一个球朝另一个球打过去(只有上下左右),碰到下一个球之后原先的球停下来,然后被撞的球朝这个方向移动,直到有一个球再也撞不到下一个球后,这个球飞出,球只能是朝上下左右四个方向打,并且要一个球四个方向都没有球了,这个球就不能打了。问说最少平面上剩几个球,并且给出打球的方案。思路:把四个方向可以连成一块的球用一个并查集连起来,有多少个并查集,最后就会剩下多少个球,然后就是从并查集的叶子节点往根结点输出路径。这里要注意,不能重复输出,还有就是,在击打球的时候,有一个先后顺序,我们输出的时候,必须严格按照这个顺序,就是说,每次必须先把父节点所有的枝 阅读全文
posted @ 2014-03-04 22:57 紫忆 阅读(735) 评论(0) 推荐(0) 编辑
摘要: 给出n个点,要你找到一个三角形,它的高是最长的。思路:暴力超时了,是用先找出n个点与其他点的最长边,再枚举顶点过的.......具体证明不知道.....#include#include#include#includeusing namespace std;#define eps 1e-8struct point{ double x; double y;};//点到直线的最短距离//bool vist[500][500][500];point intersection(point u1,point u2,point v1,point v2){ point ret=u1; ... 阅读全文
posted @ 2014-03-04 22:49 紫忆 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 给出一个64位的大数,如何快速判断其是否为素数#include#include#include#includeusing namespace std;typedef long long LL;LL n,m;//****************************************************************// Miller_Rabin 算法进行素数测试//速度快,而且可以判断 =mod) ans=ans-mod; } a=a=mod) a=a-mod; b=b>>1; } return ... 阅读全文
posted @ 2014-03-04 22:45 紫忆 阅读(3791) 评论(1) 推荐(1) 编辑
摘要: 题意:就是说有A、B两个公司要修路,有m条路,可能是属于A修的,也可能是属于B修的,现在要求所有路都联通的情况下的最小权值,并且A公司必须要修k条路。同:代码:#include#include#include#includeusing namespace std;struct node{ int v1,v2; int w;} s[100005],t[100005];int n,m,k,cnts,cntt;int father[100005],sum;int cmp(const node a,const node b){ if(a.w=k) return 1; els... 阅读全文
posted @ 2014-03-04 22:39 紫忆 阅读(1274) 评论(1) 推荐(0) 编辑