UVA 1388 - Graveyard
2015-09-10 00:29
405 查看
题意:n个点在一个圆上,每个点的距离平均分布,再加入M个点,那么最少需要移动多少距离可以让n+m个点平均分布,问最少移动的距离、
思路:模拟,将N个点的位置求出来,再将n+m个点的位置求出来,第一个点都是固定不动的,其他的点只需要按照最短的移动便可、
AC代码:
思路:模拟,将N个点的位置求出来,再将n+m个点的位置求出来,第一个点都是固定不动的,其他的点只需要按照最短的移动便可、
AC代码:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=110000; int n,m; double ans; struct node{ double x; int y; int z; }msq[maxn]; int cmd(struct node a,struct node b){ return a.x<b.x; } int main() { while(scanf("%d %d",&n,&m)!=EOF){ if(n==m){ printf("0.0\n"); continue; } ans=0.0; msq[0].x=0.0;msq[0].y=1;msq[0].z=1; msq[2*n+m-1].x=0.0;msq[2*n+m-1].y=1;msq[2*n+m-1].z=1; for(int i=1;i<n;i++){ msq[i].x=(10000.0/(n*1.0))*(i*1.0); msq[i].y=1; msq[i].z=0; } for(int i=n;i<2*n+m-1;i++){ msq[i].x=(10000/((m+n)*1.0))*((i-n+1)*1.0); msq[i].y=2; msq[i].z=0; } sort(msq,msq+n+m+n-1,cmd); for(int i=1;i<m+n+n-1;i++){ if(msq[i].y==1&&msq[i].x==msq[i-1].x){ msq[i-1].y=1; continue; } else if(msq[i].y==1&&msq[i].x==msq[i+1].x){ msq[i+1].y=1; continue; } else if(msq[i].y==1){ if(msq[i-1].y==2&&msq[i+1].y==2){ if(msq[i-1].z==0&&msq[i-1].z==0){ if(msq[i].x-msq[i-1].x>msq[i+1].x-msq[i].x){ ans+=msq[i+1].x-msq[i].x; msq[i+1].z=1; } else{ ans+=msq[i].x-msq[i-1].x; msq[i].z=1; } } else if(msq[i-1].z==0){ msq[i-1].z=1; ans+=msq[i].x-msq[i-1].x; } else if(msq[i+1].z==0){ msq[i+1].z=1; ans+=msq[i+1].x-msq[i].x; } } else if(msq[i-1].y==2&&msq[i-1].z==0){ ans+=msq[i].x-msq[i-1].x; msq[i-1].z=1; } else if(msq[i+1].y==2&&msq[i-1].z==0){ ans+=msq[i+1].x-msq[i].x; msq[i+1].z=1; } } } if(10000%n==0&&10000%(n+m)==0) printf("%.1lf\n",ans); else printf("%.4lf\n",ans); } return 0; }
相关文章推荐
- 黑马程序员 equals() 方法
- 黑马程序员 Java中集合类的区别
- 为何重写toString方法后会使哈希码能够打印出来
- Quick-Cocos2d-x初学者游戏教程(三) ---------------------------- 解析quick新建项目的代码文件
- Ubuntu下配置LAMP环境
- 三种单例模式的C++实现
- Unity中使用ulua的个人经验总结
- Linux内核如何加载编译进内核的模块
- HDU 4941 Magical Forest 离散化
- HDU3449_Consumer
- hdu 5113 Black And White
- 【抽象代数】 07 - 因子分解和多项式环
- Quick-Cocos2d-x初学者游戏教程(二) -------------------- Quick内部的代码结构及相应的原理
- Oracle Analyze 命令 详解
- 条款20:宁以pass-by-reference-to-const替换pass-by-value(Prefer pass-by-reference-to-const to pass-by-value)
- blkio.weight使用感想
- 08R2-12R2基于访问权限的文件枚举
- 08R2-12R2基于访问权限的文件枚举
- 移动 app 测试工具 bugtags
- 45个实用的JavaScript技巧、窍门和最佳实践