随笔分类 - 编程珠玑+导论
摘要:在USACO上做题时发现要判断两线段是否相交,表示不会,别人说算导上就有,于是找来看看第一节主要3个小问题1.有向线段p0p1,p0p2,如何判断p0p1在p0p2的顺时针还是逆时针方法叉积(p1-p0)x(p2-p0)=(x1-x0)(y2-y0)-(x2-x0)(y1-y0)若>0,p0p1在p0p2的顺时针.0&&d20)&&14 ((d3>0&&d40)))15 return true;16 //不考虑点在线段上的情况17 return false;18 19 }20 21 22 int direction(node ns,n
阅读全文
摘要:转自:http://m.blog.csdn.net/blog/dawn_cx/8943273对于十分稀疏的数组,按照数组下标值存入和读取数组元素。当读取数组元素时,如何不需要初始化就能判断该值是存入的还是脏数据,就需要用到下面的方法,用空间换时间。如果不用这个方法,必须对数组初始化,然后判断读取的值跟初始化值的区别,来确定该值是否是存入值。但当数据十分稀疏时,初始化过程会浪费大量的时间。一个自然的想法就是能不能用一个数组记录下已经初始化的位置,这就是to【N】数组的作用。按照初始化顺序,保存初始化的位置,用top指针来标记有效数据。但仅有to数组还不能达到读取时的随机性,如果没有from数组,
阅读全文
摘要:随机生成n个数,范围<m,要保证概率平均,不能重复,这是从珠玑编程上看到的例题题解如下 1 int c=n; 2 int rem=m; 3 for(int i=0;i<m;i++) 4 { 5 if(rand()%rem<c) 6 { 7 cout<<i<<" " ; 8 c-- 9 }10 rem--;11 }
阅读全文

浙公网安备 33010602011771号