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 |
AC了..贪心逼近 O(N) OMS..具体方法如下方法是取两个指针 f,l : f 始终表示前面的数,做分子;而 l 始终是表示后面的数,做分母. 初始化 f=l=1; 所以在更新最优解之后: 如果 f/l<(输入) ,如果r++的话,只会使 f/l 更小,说明只能移动l指针,更趋于最优解,故此时f+=1; 如果 f/l>(输入),如果l++的话,只会使 f/l 更大,更离最优值远去,说明只能r++逐步接近最优解,故此时l+=1。 同时在逼近过程不断更新最优值并记录即可.. 核心代码: f=1;l=1;tmp=INF; while(f<=Maxsize&&l<=Maxsize){ if( fabs((double)f*1.0/(double)l*1.0-res) < tmp && (f*b!=l*a)){ tmp=fabs((double)f*1.0/(double)l*1.0-res); aa=f;bb=l;//aa,bb分别记录最优值 } if( (double)f*1.0/(double)l*1.0< res ) f+=1; else l+=1; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator