http://codeforces.com/gym/101246/problem/J

题意:给出n个点坐标,要使这些点间距相同的话,就要移动这些点,问最少的需要的移动距离是多少,并输出移动后的坐标。

思路:昨晚比赛确定的一点就是通过X分搜索去枚举间距,使得最后的移动距离最短。

不过使用的是二分,而且写的时候也只枚举了起点和终点,后面想了要枚举所有的点,但时间来不及。

因为间距的单调不会使得答案单调,间距过大过小都会使得最后的移动距离不是最优,所以是使用三分而不是二分,顺便重温一下三分。

     while(fabs(r - l) > eps) {
double mid = (l + r) / 2.0;
double midd = (mid + r) / 2.0;
if(cal(mid, ) > cal(midd, )) l = mid;
else r = midd;
}
double ans = cal(l, ) > cal(r, ) ? r : l;

对于每次三分,每次在n个点里面假设一个点不动,然后枚举完算一遍,取最优。

而且据说挺卡精度的,直接开了1e-12.

 #include <bits/stdc++.h>
using namespace std;
#define N 405
const double eps = 1e-;
double num[N];
int n, id; double cal(double x, int flag) {
double res = , ans = ;
for(int st = ; st <= n; st++) {
res = ;
for(int i = ; i < st; i++)
res += fabs(num[st] - (st - i) * x - num[i]);
for(int i = st + ; i <= n; i++)
res += fabs(num[st] + (i - st) * x - num[i]);
if(ans > res) ans = res, id = st;
}
return ans;
} void solve() {
scanf("%d", &n);
for(int i = ; i <= n; i++) scanf("%lf", &num[i]);
double l = , r = ;
while(fabs(r - l) > eps) {
double mid = (l + r) / 2.0;
double midd = (mid + r) / 2.0;
if(cal(mid, ) > cal(midd, )) l = mid;
else r = midd;
}
double ans = cal(l, ) > cal(r, ) ? r : l;
double res = cal(ans, );
printf("%.4f\n", res);
for(int i = ; i < id; i++)
printf("%.10f ", num[id] - (id - i) * ans);
printf("%.10f ", num[id]);
for(int i = id + ; i <= n; i++)
printf("%.10f ", num[id] + (i - id) * ans);
} int main() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
solve();
return ;
}

Codeforces Gym101246J:Buoys(三分搜索)的更多相关文章

  1. Weakness and Poorness CodeForces - 578C 三分搜索 (精度!)

    You are given a sequence of n integers a1, a2, ..., an. Determine a real number x such that the weak ...

  2. hdu 4355 Party All the Time(三分搜索)

    Problem Description In the Dark forest, there is a Fairy kingdom where all the spirits will go toget ...

  3. 三分搜索-ZOJ LightBulb

    开始算法基础学习的第一天 今天学习的内容是三分搜索 相对来说很基础的内容(还是觉得脑子不够用) 三分搜索主要用于凸函数查找极大值. (盗个图) 如图所示 若要查找该函数的最大值 可以考虑和二分法一样的 ...

  4. Codeforces 782B:The Meeting Place Cannot Be Changed(三分搜索)

    http://codeforces.com/contest/782/problem/B 题意:有n个人,每个人有一个位置和速度,现在要让这n个人都走到同一个位置,问最少需要的时间是多少. 思路:看上去 ...

  5. Codeforces 799D Field expansion - 搜索 - 贪心

    In one of the games Arkady is fond of the game process happens on a rectangular field. In the game p ...

  6. Codeforces Round #427 (Div. 2) Problem D Palindromic characteristics (Codeforces 835D) - 记忆化搜索

    Palindromic characteristics of string s with length |s| is a sequence of |s| integers, where k-th nu ...

  7. Codeforces C. NP-Hard Problem 搜索

    C. NP-Hard Problem time limit per test:2 seconds memory limit per test:256 megabytes input:standard ...

  8. Codeforces 939E Maximize! (三分 || 尺取)

    <题目链接> 题目大意:给定一段序列,每次进行两次操作,输入1 x代表插入x元素(x元素一定大于等于之前的所有元素),或者输入2,表示输出这个序列的任意子集$s$,使得$max(s)-me ...

  9. CodeForces - 1059D——二分/三分

    题目 题目链接 简单的说,就是作一个圆包含所有的点且与x轴相切,求圆的最小半径 方法一 分析:求最小,对半径而言肯定满足单调性,很容易想到二分.我们二分半径,然后由于固定了与X轴相切,我们对于每一个点 ...

随机推荐

  1. 合并ResourceDictionary

    原文:合并ResourceDictionary <!--合并资源到资源集合中--> <ResourceDictionary> <ResourceDictionary.Me ...

  2. jquery mobile 笔记

    1.navbar 相关 <nav data-role="navbar">    <ul>      <li><a href="# ...

  3. WPF - 本质:数据和行为

    原文:WPF - 本质:数据和行为 如果自己来做一个UI框架,我们会首先关注哪些方面?我想UI框架主要处理的一定包括两个主要层次的内容,一个是数据展现,另一个就是数据操作,所以UI框架必须能够接收各种 ...

  4. XF 标签和文本控件

    <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http:/ ...

  5. 1 min 数据查询 SQL 优化

    问题 前几天线上数据库 IOPS 飙升,一直居高不下,最近并没有升级.遂查看数据库正在执行的 SQL 语句,发现有个查询离线设备的语句极其缓慢. 探寻原因 SELECT o.* FROM ( SELE ...

  6. 更改开机默认不显示explorer.exe,直接启动自己写的EXE程序方法

    原文:更改开机默认不显示explorer.exe,直接启动自己写的EXE程序方法 更改开机默认不显示explorer.exe,直接启动自己写的EXE程序的函数: bool UpdateWinlogon ...

  7. 在WPF中实现图片一边下载一边显示

    原文 在WPF中实现图片一边下载一边显示 当我们上网查看一个较大的图片时,浏览器能一边下载一边显示,这样用户体验是比较好的,但在WPF程序中,当我们通过如下方式显示一幅图片时: img.Source ...

  8. Win10《芒果TV》更新v3.8.30流星版:优化稳定性、升级无边框播放体验

    随着暑假到来,大波王牌综艺和青春电视剧热浪来袭,Win10版<芒果TV>全平台同步更新流星版v3.8.30,进一步提升稳定性,巩固播放体验,升级剧场模式和画中画无边框体验,我们在芒果等你. ...

  9. RedHat 7.3 修改ASM磁盘绑定路径

    RedHat 7中,很多命令发生了改变,绑定磁盘不再是start_udev,而是udevadm,具体绑定方式,请看另一篇博文: http://www.cnblogs.com/zx3212/p/6757 ...

  10. UWP入门(十一)--使用选取器打开文件和文件夹

    原文:UWP入门(十一)--使用选取器打开文件和文件夹 很漂亮的功能,很有趣 重要的 API FileOpenPicker FolderPicker StorageFile 通过让用户与选取器交互来访 ...