当前位置: 首页>>代码示例>>C++>>正文


C++ poly::end方法代码示例

本文整理汇总了C++中poly::end方法的典型用法代码示例。如果您正苦于以下问题:C++ poly::end方法的具体用法?C++ poly::end怎么用?C++ poly::end使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在poly的用法示例。


在下文中一共展示了poly::end方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: convex_hull

void convex_hull(poly &v,poly &p)
{
    p.clear() ;
    sort(v.begin(),v.end()) ;
    v.resize(unique(v.begin(),v.end())-v.begin()) ;
    int n=v.size() ;
    int sz=0 ;
    for(int i=0;i<n;i++)
    {
        while(sz>=2 && dcmp(cross(st[sz-2],st[sz-1],v[i]))<0)
            sz-- ;
        st[sz++]=v[i] ;
    }
    for(int i=0;i<sz;i++) p.push_back(st[i]) ;

    sz=0 ;
    for(int i=0;i<n;i++)
    {
        while(sz>=2 && dcmp(cross(st[sz-2],st[sz-1],v[i])>0))
            sz-- ;
        st[sz++]=v[i] ;
    }
    for(int i=sz-1;i>=0;i--)
    {
        if(i==sz-1 && st[i]==p.back()) continue ;
        if(i==0 && st[i]==p[0]) continue ;
        p.push_back(st[i]) ;
    }
}
开发者ID:a00012025,项目名称:Online_Judge_Code,代码行数:29,代码来源:536-C.cpp

示例2: graham

poly graham(poly p){
	int i,j,n = p.size();
	poly g;
	pivo = *min_element(p.begin(), p.end(), cmp_pivo);
	sort( p.begin(), p.end(), cmp_radial);
	// n previous declared
	for( i=j=0; i<n;i++){
		while( j>=2 && ccw( g[j-2] , g[j-1], p[i]) >=0){
			g.pop_back(); j--;
		}
		g.push_back(p[i]); j++;
	}
	return g;
}
开发者ID:dnr2,项目名称:maratona,代码行数:14,代码来源:10652+-+Board+Wrapping.cpp

示例3: convex_hull

void convex_hull(poly & t, poly & r) {
	unsigned i;
	Compare order;
	// Search leftmost vertex
	order.p0 = t[0];
	for (i = 1; i < t.size(); ++i)
		if (t[i].real() < order.p0.real())
			order.p0 = t[i];
	sort(t.begin(), t.end(), order);
	for (i = 0; i < t.size(); ++i) {
		r.push_back(t[i]);
		// Pop vertices that become internal
		while (r.size() > 3u && angle(r.end()[-3], r.end()[-2], r.end()[-1])) {
			r.end()[-2] = r.back();
			r.pop_back();
		}
	}
	return;
}
开发者ID:jdumas,项目名称:acm,代码行数:19,代码来源:Deer_proof_fence_4450.cpp

示例4: hull

poly hull( poly p ) {
	int k = 0, n = p.size();
	sort( p.begin(), p.end());
	poly h( 2 * n );
	for(int i = 0; i < n; i++){
		while( k >= 2 && ccw( h[k-2], h[k-1], p[i] ) <= 0 ) k--;
		h[ k++ ] = p[ i ];
	}
	int tmp = k + 1;
	for(int i = n - 2; i >= 0; i--){
		while( k >= tmp && ccw( h[k-2], h[k-1], p[i] ) <= 0 ) k--;
		h[ k++ ] = p[ i ];
	}
	h.resize( k );
	return h;
}
开发者ID:JoseMiguel,项目名称:icpc-training,代码行数:16,代码来源:uva811.cpp

示例5: graham

poly graham (poly p) {


    for (int i = 1; i < p.size(); ++i) {
        if (p[i] < p[0])
                swap(p[0],p[i]);
    }
    pivot = p[0];
    sort(p.begin(),p.end(),angleCmp);

    poly chull (p.begin(),p.begin()+3);

    for (int i = 3; i < p.size(); ++i) {

        while(chull.size()>=2 && cross(chull[chull.size()-2],chull[chull.size()-1],p[i]) <= 0) {

            chull.erase(chull.end()-1);
        }
        chull.push_back(p[i]);
    }
    return chull;

}
开发者ID:spalac24,项目名称:competitive_programming,代码行数:23,代码来源:convex.cpp


注:本文中的poly::end方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。