思维 UVALive 3708 Graveyard

题目传送门

 1 /*
 2     题意:本来有n个雕塑,等间距的分布在圆周上,现在多了m个雕塑,问一共要移动多少距离;
 3     思维题:认为一个雕塑不动,视为坐标0,其他点向最近的点移动,四舍五入判断,比例最后乘会10000即为距离;
 4     详细解释:http://www.cnblogs.com/zywscq/p/4268556.html
 5 */
 6 #include <cstdio>
 7 #include <iostream>
 8 #include <algorithm>
 9 #include <cmath>
10 #include <cstring>
11 #include <string>
12 #include <map>
13 #include <set>
14 #include <queue>
15 using namespace std;
16
17 const int MAXN = 1e4 + 10;
18 const int INF = 0x3f3f3f3f;
19
20 int main(void)        //UVALive 3708 Graveyard
21 {
22     //freopen ("UVALive_3708.in", "r", stdin);
23
24     int n, m;
25
26     while (scanf ("%d%d", &n, &m) == 2)
27     {
28         double ans = 0.0, pos;
29         for (int i=1; i<n; ++i)
30         {
31             pos = (double) i / n * (n + m);
32             ans += fabs (pos - floor (pos + 0.5)) / (n + m);
33         }
34
35         printf ("%.4lf\n", ans * 10000);
36     }
37
38     return 0;
39 }
时间: 2024-11-04 11:19:13

思维 UVALive 3708 Graveyard的相关文章

UVALive 3708 Graveyard(思维题)

将原有的每个雕塑的坐标位置,映射在一个总长为n+m的数轴上,设第一个点的坐标为0,(新的等分点必然有至少有一个和原来n等分的等分点重合,因为等分点可以等距的绕圆周旋转,总可以转到有至少一个重合的,不妨就让这个重合的点是坐标为0的点)从0到n+m-1的每个整数端点为添加雕塑之后每个雕塑的正确位置.pos[i]代表原来的第i个点在新数轴上的坐标,i/n是在总长为1的线段上n等分的第i个点所占的比例,那么在总长为n+m的线段上它的坐标pos[i]=i/n*(n+m).由于第一个雕塑的坐标保持为0,从第

UVAlive 3708 Graveyard(最优化问题)

题目描述: 在周长10000的圆上,初始等距的放置着n个雕塑,现在新加入m个雕塑,要使得这n+m个雕塑仍然等距,问原来n个雕塑要移动的距离总和的最小值. 原题地址: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=15133 分析:将原有的每个雕塑的坐标位置,映射在一个总长为n+m的数轴上,设第一个点的坐标为0,(新的等分点必然有至少有一个和原来n等分的等分点重合,因为等分点可以等距的绕圆周旋转,总可以转到有至少一个重合的,

uvalive 3708 Graveyard

https://vjudge.net/problem/UVALive-3708 题意: 一个长度为10000的圆环上放着n个雕塑,每个雕塑之间的距离均相等,即这个圆环被n个点均分.现在需要加入m个雕塑,这m个雕塑任意放置,但是需要满足放置之后n+m个雕塑均分这个圆环.那么原来的雕塑就需要移动,求原来的雕塑移动的最小总距离. 思路: 首先,我们只需要移动原来的雕塑就可以解决问题,因为后面的m个雕塑可以任意放,所以直接放在安排好的位置上即可.其次,有一个雕塑是不需要移动的,至于为什么,我无法证明,但

LA 3708 Graveyard

题意:给出一个圆周,这个圆周上有n个雕塑,现在加入m个雕塑,问最小的移动距离 因为不管怎么移动,可以选择一个作为坐标原点,所以需要挪动的是n-1个 最开始不理解白书上的式子--- 后来搜题解 http://www.cnblogs.com/wuhenqs/p/3203114.html pos = i*(n + m) /n 是把这个圆周缩成周长为(n + m)的圆,然后除以n代表原来的一份有多少,再乘以份数i,得到它原来的位置 又因为圆的周长是n+m,所以现在的pos一定是整数 所以 距离 = |p

2015Summer Training #2

暑假集训昨天刚开始,14级的小伙伴快到齐了,hhhhh ,毕竟下学期区域赛,对我们来说还是很困难的. 打算每天写份总结. UVA 11300 C.Spreading the Wealth 题目大意:n个人围成一圈,告诉你每个人现有的资产,每个人可以给他相邻的人钱,也可以从他相邻的人那里取到钱.最终令一圈里的人资产数相等,求最少传递的钱数. 其实是到数学题. 1a[1] - x1 + x2 = m(平均数)x2 = m + x1 - a[1] ; 2 a[2] - x2 + x3 = m ,x3

LA 3708 &amp;&amp; POJ 3154 Graveyard (思维)

题意:在周长为10000的圆上等距分布着n个雕塑,现在又加入m个,现在让m+n个等距分布,那就得移动一些原有的雕塑,问你移动的最少总距离是多少. 析:首先我们可以知道,至少有一个雕塑是可以不用移动的,那么我们以那修个没有移动的雕塑为原点建立坐标.现在问题就转化为把剩下的移动到离它最近的位置(这个位置是放入m个雕塑之后的位置),那么这个距离就应该是最短的. 代码如下: #include <cstdio> #include <iostream> #include <cstring

UVALive 5873 (几何+思维)

唉 被秀了... 还是太弱,说好的数形结合呢,列个式子出来后就被吓到了,然后就懵逼了. 题意: 有一条狗,从原点出发,沿n个向量走,每个向量只走一次,沿着一个向量(x,y)走时,既可以往(x,y)方向走,也可以往(-x,-y)方向走. 然后问这条狗离原点最远的距离. 如果写成方程: n个向量分别表示为: (x1,y1) (x2,y2) (x3,y3) ... (xn,yn) 第i个向量往(xi,yi)方向则ai=1,否则ai=-1 则ans = (a1*x1+a2*x2+...+an*xn)^2

物联网世界常见传输方式简介(思维导图)

物联网世界常见的传输方式包括:移动网络(2G/3G/4G).wifi.蓝牙.ZigBee等传统的传输方式,以及基于NB-IOT.Lora等新兴的传输方式.以下思维导图供参考: 点击附件下载原图.

POJ2100 Graveyard Design(尺取法)

POJ2100 Graveyard Design 题目大意:给定一个数n,求出一段连续的正整数的平方和等于n的方案数,并输出这些方案,注意输出格式: 循环判断条件可以适当剪支,提高效率,(1^2+2^2+..n^2)=n*(n+1)*(2n+1)/6; 尺取时一定要注意循环终止条件的判断. #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <