UVA 1388 - Graveyard
来源:互联网 发布:windows update在哪里 编辑:程序博客网 时间:2024/05/21 00:00
题意:n个点在一个圆上,每个点的距离平均分布,再加入M个点,那么最少需要移动多少距离可以让n+m个点平均分布,问最少移动的距离、
思路:模拟,将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;}
0 0
- uva 1388 - Graveyard
- Uva Oj 1388 - Graveyard
- uva 1388 - Graveyard(思维)
- UVa 1388 - Graveyard
- uva 1388Graveyard
- uva 1388 - Graveyard(贪心)
- UVA之1388 - Graveyard
- Uva 1388 Graveyard - 水题
- UVA 1388 Graveyard
- UVA - 1388 Graveyard 四舍五入
- UVA 1388 - Graveyard
- UVA - 1388 Graveyard
- UVA 1388 Graveyard
- UVA - 1388 Graveyard 【数学】
- uva 1388 - Graveyard(数论)
- UVA 1388 - Graveyard (推理,参考系)
- UVa 1388Graveyard 墓地雕塑
- uva 1388 - Graveyard(数论)
- Linux内核如何加载编译进内核的模块
- HDU 4941 Magical Forest 离散化
- HDU3449_Consumer
- 黑马程序员 Java中集合类的区别
- Ubuntu下使用Sphinx
- UVA 1388 - Graveyard
- 黑马程序员 equals() 方法
- 哈工大软件学院数据库实验1
- 视频测试的Dataset
- ZOJ 3735 Josephina and RPG 概率dp水题。
- libevent使用点滴(2)bufferevent_pair_new的事件时并不能使其循环
- Windows WDM型驱动编程之MDL
- 静态页面布局
- 广州实时公交查询系统调研