LA3708 Graveyard --思维的体操
来源:互联网 发布:twisted windows 编辑:程序博客网 时间:2024/05/01 14:11
题目链接:
点击打开链接
题目意思:
在一个周长为10000的圆上等距离分布折n个雕塑,现在又有m个新雕塑加入(位置可以随意放),希望所有n+m个雕塑在圆周上均匀分布,这就需要移动一些原有的雕塑。要求n个雕塑移动的距离和最小。
题目分析:
仔细分析样例,3个样例有一个共同特点,即有一个雕塑没有移动,如果该特点成立,那么其他的雕塑位置已经确立。我们不放设没动的雕塑坐标为0,其他的n+m个雕塑的编号分别为1,2,。。。,再根据此坐标计算出初始的n个雕塑的坐标,例如n=3,m=1时,移动后的雕塑坐标为0,1,2,3;移动前的雕塑坐标为0,4/3,8/3;再计算出坐标向邻近两个坐标中移动;最小距离。注意,此坐标是按10000/(m+n)比列得来的坐标,最后需要转换回去。具体为什么会有一个雕塑不动,参考刘汝佳训练指南P4.
AC代码:
#include <stdio.h>#include <cmath>#include <iostream>using namespace std;int main(){ int n,m; while(scanf("%d%d",&n,&m) != EOF) { double ans = 0.0; for(int i=1;i<n;i++) { double pos = (double)i/n*(m+n); ans += fabs(pos - floor(pos + 0.5)) /(m+n); } //floor为取整函数,得到pos四舍五入后的整数值 printf("%.4lf\n",ans*10000); } return 0;}
0 0
- LA3708 Graveyard --思维的体操
- LA3708:Graveyard
- LA3708-Graveyard
- LA3708 - Graveyard(墓地)
- LA3708 Graveyard 墓地雕塑
- LA3708 Graveyard 墓地雕塑
- LA3708 Graveyard (暴力)
- LA3708 Graveyard 墓地雕塑-水题
- LA3708 - Graveyard (等比缩放)
- 思维锻炼LA3708
- 思维的体操——偶数矩阵
- 大白书 1.1节 思维的体操
- (06-06)思维的体操
- 算法设计基础1.1思维的体操
- 思维体操: HDU1049Climbing Worm
- 思维体操: HDU1008 Elevator
- 思维的体操——墓地雕塑和蚂蚁问题
- uva 1388 - Graveyard(思维)
- memcached的基础
- Java对象和实例的区别
- JAVA对象的实例化
- smtp协议的简单利用
- 安装第三方库出现 Python 2.7 version required. blabla~
- LA3708 Graveyard --思维的体操
- 用 new 关键字对一个String 变量赋值和用literal值直接赋值有什么不同
- MYSQL 游标使用示例
- 智能插板几个链接
- CentOS下构建Samba文件共享服务器
- Linux命名管道FIFO的读写规则
- 安装autojump:在命令行下快速更改目录
- 随笔1
- 单机最大tcp连接数