| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:可能有人发送为E,G,H 的源代码,以我的电子邮件-piotr.mikulski@gmail.com?In Reply To:可能有人发送为E,G,H 的源代码,以我的电子邮件-piotr.mikulski@gmail.com? Posted by:pmnox at 2008-08-31 18:26:41 > 可能有人发送为E,G,H 的源代码,以我的电子邮件-piotr.mikulski@gmail.com?
#包括<iostream>
#包括<vector>
#包括<cmath>
使用名字空间性病;
常量诠释maxn = 110005 ;
常量诠释maxm = 11005 ;
常量双零= 1e中- 8 ;
诠释[ maxn ] ,乙[ maxn ] , [ maxn ] ;
结构pnode (
双重的X , Y ;
) ;
pnode的LIS [ maxn ] ,五[ maxn ] ,阙[ maxn ] ,岑;
诠释氮,男,乐,克[ maxn ] ;
诠释搜索[ maxm ] [ 2 ] ;
双答[ maxm ] ;
bool myless (常量pnode & X的常量pnode安永)
(
如果部分( FABS ( x.y - y.y ) > 0 )
返回x.y < y.y ;
其他的
返回x.x < y.x ;
)
内置双交叉( pnode普, pnode及石矿, pnode与R )
(
返回( q.x - p.x ) * ( r.y - p.y ) -( q .y- p .y) * ( r .x- p .x) ;
)
内置诠释getvalue (双十)
(
如果部分( FABS ( x )的< = 0 )
返回0 ;
否则,如果(十> 0 )
返回一;
其他的
返回-1 ;
)
内置诠释getcross ( pnode普, pnode及石矿, pnode与R )
(
返回getvalue (跨的( p , q , r ) )的;
)
无效凸( )
(
诠释,我j ;
排序( &的LIS [ 1 ] , &的LIS [一] , myless ) ;
/ / (一= 1 ,我< = ; + +一)
/ / printf ( “ 0.2 % , 0.2 %的LF LF炉\ n ” ,未决[一]的X ,未决[一] 。 y )的;
乐= 0 ;
(一= 1 ,我< = ; + + ) (
而(乐> 1 & & getcross (阙[乐1 ] ,阙[乐] ,未决[一] ) < = 0 ) -乐;
+乐;
阙[乐] =的LIS [一] ;
)
j =乐;
(一为N ;我> = 1 ; -我) (
而(乐>在J & & getcross (阙[乐1 ] ,阙[乐] ,未决[一] ) < = 0 ) -乐;
+乐;
阙[乐] =的LIS [一] ;
)
(一= 1 ,我< =乐; + +一)
未决[一] =阙[一] ;
-乐;
/ / printf ( “ \ n ” ) ;
/ / (一= 1 ,我< =乐; + +一)
/ / printf ( “ 0.2 % , 0.2 %的LF LF炉\ n ” ,未决[一]的X ,未决[一] 。 y )的;
)
无效get_vector ( )
(
诠释;
(一= 1 ,我< =乐; + + ) (
五[一]的X =的LIS [我一]的X的LIS [一] X的;
五[一] 。为Y =的LIS [我一] 。 Y型的LIS [一] 。 y ;
/ /克[一] = ;
)
)
内置bool之间( pnode普, pnode及石矿, pnode与R )
(
返回( getcross共同体( CEN ,的Q规划) > 0 & & getcross共同体( CEN ,磷, R )上> = 0 ) ;
)
诠释找到(双XX条,双年)
(
pnode现在;
now.x = XX条;
now.y =年;
如果(之间的(现在,五[乐] ,五[ 1 ] ) )
返回一;
诠释升= 1时, R =乐,中旬;
而( 1升< ) (
中= (升+ ) / 2 ;
如果( getcross共同体( CEN ,五[升] ,五[中] ) > 0 ) (
如果(之间的(现在,五[升] ,五[中] ) )
r =中;
其他的
升=中;
)否则(
如果(之间的(现在,五[中] ,五[ r ] ) )
升=中;
其他的
r =中;
)
)
返回右;
)
内置功能的诠释(诠释x )的
(
如果(十>乐)
返回的X乐;
其他的
返回x ;
)
无效getpoint (双XX条,双年,圣诠释,诠释,教育署,诠释& X的诠释安永)
(
pnode现在;
now.x = XX条;
now.y =年;
x =- 1 ;
为y =-一;
如果(教育署<圣)教育署,教育署= +乐;
诠释va1 , va2 ;
va1 = getcross共同体( CEN ,现在的LIS [圣] ) ;
va2 = getcross共同体( CEN ,现在的LIS [功能(教署) ] ) ;
如果( va1 == 0 ) (
x =圣;
为Y =功能(圣一) ;
返回;
)
如果( va2 == 0 ) (
x =功能(教育) ;
为Y =功能(海关- 1 ) ;
如果(是== 0 )为Y =乐;
返回;
)
如果( va1 == va2 )返回;
而(圣一<教育署) (
诠释中= (圣+教育署) / 2 ;
诠释VA部= getcross共同体( CEN ,现在的LIS [功能(中) ] ) ;
如果( VA部== 0 ) (
教育署=中;
圣=中一;
打破;
)如果( VA部== va1 )
圣=中;
其他的
教育署=中;
)
x =功能(圣) ;
为Y =功能(教育) ;
)
无效getequation ( pnode普, pnode及石矿,双击&一,双及B ,双&三)
/ /根据磷, q两点得到直线方程的AX + + = 0
(
1 = p.y - q.y ;
b = q.x - p.x ;
c = p.x * q.y - p.y * q.x ;
)
bool solveequation (双一,双b , c双,双酶A2 , B2的双,双的C2 , pnode & PP )的
/ /解方程,求两直线交点
(
如果部分( FABS (乙*酶A2 - B2的*一) < = 0 )
返回FALSE ;
pp.y =- (三*酶A2 -的C2 * ) / (乙*酶A2 - B2的* ) ;
如果(晶圆厂(一) > 0 )
pp.x = ( -的C - B * pp.y ) /一;
其他的
pp.x = ( -中C2 - B2的* pp.y ) /酶A2 ;
真正的回报;
)
bool intersect_point ( pnode普, pnode及石矿, pnode &铀, pnode及V , pnode & PP )的
/ /求p -Q报告,美国- V的两直线的交点页
(
双机管局,预算局,消委会;
双aa2 , bb2 , cc2 ;
getequation的( p , q ,机管局,预算局,消委会) ;
getequation (铀,五, aa2 , bb2 , cc2 ) ;
返回solveequation (机管局,预算局,消委会, aa2 , bb2 , cc2 ,聚丙烯) ;
)
内置双存款保险计划(双X的双Y )
(
返回sqrt (十*用X + y * y )的;
)
无效Updata公司(诠释NUM个, pnode & P )的
(
双VA部=存款保险计划(六[ NUM个] [ 0 ] ,女[ NUM个] [ 1 ] ) /存款保险计划( p.x , p.y ) ;
如果( VA部>答[ NUM个] )答[ NUM个] = VA部;
)
作废支票( NUM个诠释,诠释X的诠释y )的
(
如果(十==- 1 )的回报;
/ / printf ("(%. 2lf % 0.2 LF炉) ( % , 0.2 %的LF 0.2星期三) \ n “ ,未决的[ x ] X的,未决的[ x ] 。 y ,未决的[ Y ] X的,未决的[ Y ] 。 y )的;
pnode现在;
now.x = F的[ NUM个] [ 0 ] ;
now.y = F的[ NUM个] [ 1 ] ;
如果(十==- 1 )的回报;
如果( getcross共同体( CEN ,现在的LIS的[ x ] ) == 0 )
Updata公司( NUM个,土地信息系统的[ x ] ) ;
如果( getcross共同体( CEN ,现在的LIS的[ Y ] ) == 0 )
Updata公司( NUM个,土地信息系统的[ Y ] ) ;
pnode宝;
如果( intersect_point (未决的[ x ] ,未决的[ Y ] ,岑,现在,宝) )
Updata公司( NUM个,区) ;
)
无效的钙( )
(
诠释,我上,下,的X , Y ;
(一= 1 ,我< =米; + + ) (
答[一] =- 1 ;
如果(六[一] [ 0 ] == 0 &及F [一] [ 1 ] == 0 ) (
答[一] = 0 ;
继续;
)
下跌=找到(六[一] [ 0 ] ,女[一] [ 1 ] ) ;
找到了= ( - F的[一] [ 0 ] , - F的[一] [ 1 ] ) ;
getpoint (六[一] [ 0 ] ,女[一] [ 1 ] , , ,的X , Y ) ;
检查(我的X , Y ) ;
getpoint (六[一] [ 0 ] ,女[一] [ 1 ] ,上,下,的X , Y ) ;
检查(我的X , Y ) ;
)
(一= 1 ,我< =米; + +一)
如果(答[一] ==- 1 )
printf ( “不可能\ n ” ) ;
其他的
printf ( “ 0.5 %的LF \ n ” ,答[我] ) ;
)
诠释的Main ( )
(
cen.x = 0 ;
cen.y = 0 ;
scanf ( “ % d个% D ”类,及氮, &米) ;
诠释;
(一= 1 ,我< = ; + + ) (
scanf ( “第% d % d个% D ”类,及一[一] ,及B [一] ,及C [一] ) ;
未决[一]的X =一[一] / (三[一] 0.0 ) ;
未决[一] 。为Y = B的一] / (三[一] 0.0 ) ;
)
(一= 1 ,我< =米; + +一)
scanf ( “ % d个% D ”类,及F [一] [ 0 ] ,及F [一] [ 1 ] ) ;
凸( ) ;
/ / printf ( “乐= % d个\ n ” ,乐) ;
get_vector ( ) ;
钙( ) ;
/ / scanf ( “ % D ”类, & n )的;
)
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator