POJ-3154-Graveyard
这题的算法好神!Orzz
一个周长为10000的圆圈,一开始等距的安放着N个雕塑,现在想增加M个雕塑,使得雕塑之间还是等距,问坟墓最少移动的距离?
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #define F 10000 using namespace std; int main() { int n,m; while(~scanf("%d%d",&n,&m)){ double ans=0; for(int i=1;i<n;i++){ double pos=(double)i/n*(n+m);//计算每个需要移动的雕塑的坐标 ans+=fabs(pos-floor(pos+0.5))/(n+m);//累加移动距离 } printf("%.4lf\n",ans*F);//等比例扩大坐标 } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步