UVA - 1388 Graveyard 【数学】
题意:
给一个周长为10000的圆,一开始有n个距离相等的点, 现在要添加m个点使其仍旧保持距离相等的状态,问最小的移动距离。
思路:
遍历原来的每一个点,找出离他最近的新的位置。
copy
#include <map> #include <set> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <iostream> #include <stack> #include <cmath> #include <string> #include <vector> #include <cstdlib> //#include <bits/stdc++.h> //#define LOACL #define space " " using namespace std; //typedef long long LL; typedef __int64 Int; typedef pair<int, int> paii; const int INF = 0x3f3f3f3f; const double ESP = 1e-5; const double PI = acos(-1.0); const int MAXN = 100 + 10; int main() { int n, m; while (scanf("%d%d", &n, &m) != EOF) { double ans = 0; double l = 360.0/(n + m); for (int i = 0; i < n; i++) { double temp = 360.0/n * i; double x = temp/l; ans += min(abs(temp - x*l), abs(x*l+l-temp))/360.0*100; } printf("%.6lf\n", ans); } return 0; }
本文作者: zprhhs
本文链接:https://www.cnblogs.com/cniwoq/p/6770771.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步