指南第一章 例题4 UVALive 3708 Graveyard(参考系)
2016-08-31 19:56
387 查看
题目链接:http://7xjob4.com1.z0.glb.clouddn.com/3429fea0c017c718af3757fec7eb0b69
中文题意:
在一个周期为10000的圆上等距分布着n个雕塑。现在有m个新雕塑加入(位置可以随意放),希望所有n+m个雕塑在圆周上均匀分布。这就需要移动其中一些原有的雕塑。要求n的雕塑移动的总距离尽量小。
【输入格式】
输入包含若干组数据。每组数据仅一行,包含两个整数n和m(2<=n<=1000,1<=m<=1000),即原始的雕塑数量和新加入的雕塑数量。输入结束标志为文件结束符(EOF)。
【输出格式】
输出仅一行,精确到小数点后四位。
【分析】原来的雕塑肯定有一个是不需要移动的,然后其他的需要移动的距离需要看他们一开始所处的位置在哪里。
下面是AC代码:
中文题意:
在一个周期为10000的圆上等距分布着n个雕塑。现在有m个新雕塑加入(位置可以随意放),希望所有n+m个雕塑在圆周上均匀分布。这就需要移动其中一些原有的雕塑。要求n的雕塑移动的总距离尽量小。
【输入格式】
输入包含若干组数据。每组数据仅一行,包含两个整数n和m(2<=n<=1000,1<=m<=1000),即原始的雕塑数量和新加入的雕塑数量。输入结束标志为文件结束符(EOF)。
【输出格式】
输出仅一行,精确到小数点后四位。
【分析】原来的雕塑肯定有一个是不需要移动的,然后其他的需要移动的距离需要看他们一开始所处的位置在哪里。
下面是AC代码:
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> 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*10000); } return 0; }
相关文章推荐
- UVALive 4244 Party Party Party(HDU 2779 && Sicily 1663)
- UVALive 6741 The Sacrificial Firepits
- UVALive 5870 - Smooth Visualization
- UVALive 5876 - Writings on the Wall 【KMP】
- UVALive 5878 - Shortest Leash 【计算几何】
- UVALive 5873 - Tree Inspections 【模拟】
- uvalive3938 “Ray, Pass me the dishes!”
- UVALive 6800 The Mountain of Gold (bellman_ford判负环)
- UVALive 6436 The Busiest City
- F - Buggy Sat
- E - Lazy Math Instructor
- C - Push!!
- UVALive - 3635 - Pie(二分)
- Uvalive 6855 Banks
- Uvalive 7150 Amalgamated Artichokes
- Uvalive 4954 Lawn mower
- Uvalive 6832 Bit String Reordering
- Uvalive 6398 Low Power
- Uvalive 6929 Sums
- uvalive 6859