题面


题目链接

解题思路

我们能够观察出如下性质:
1.每个人要么一开始往左,再一直往右,要么一开始往右再一直往左。
2.每个人都是在不停的运动。
我们可以二分一个时间t,考虑在t时间内相邻的两个人是否都能够碰面一次。
我们发现每个人只会有两种策略,考虑使用dp消除两种策略的前效性。
dp1[i]表示在t时刻,第i个人先向左i-1碰面后往右能够到达的最远位置。
dp2[i]表示第i个人在t时刻和i-1碰面且一开始能够向右走dp2[i]的时间。
转移即可。
复杂度O(nlogn)。

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;const int N = 2e5 + 100;int n;
int sa[N], dp1[N], dp2[N];
//dp1[i]表示在终点时刻,i能到达的最靠右的位置
//dp2[i]表示i最多能向右走i秒,然后向左折返void upd(int &a, int b) {if (a < b) a = b;
}bool check(int x) {for (int i = 1; i <= n; i++) dp1[i] = dp2[i] = -2e9;dp1[1] = sa[1] + x;dp2[1] = x;for (int i = 2; i <= n; i++) {if (dp1[i - 1] < sa[i] - x && sa[i - 1] + dp2[i - 1] < sa[i] - dp2[i - 1]) return false;if (dp1[i - 1] >= sa[i] - x) {if (dp1[i - 1] < sa[i]) upd(dp2[i], (x - (sa[i] - dp1[i - 1])) / 2);else {upd(dp2[i], (x + (dp1[i - 1] - sa[i])) / 2);// dp1[i - 1] - (x - t) = sa[i] - tint t = (sa[i] + x - dp1[i - 1]) / 2;upd(dp1[i], sa[i] + x - 2 * t);}}if (sa[i - 1] + dp2[i - 1] >= sa[i] - dp2[i - 1]) {//sa[i - 1] + t = sa[i] - t;int t = (sa[i] - sa[i - 1]) / 2;upd(dp1[i], sa[i] + x - 2 * t);upd(dp2[i], (dp2[i - 1] * 2 - (sa[i] - sa[i - 1])) / 2);}}return true;
}int main() {//freopen("0.txt", "r", stdin);scanf("%d", &n);for (int i = 1; i <= n; i++) scanf("%d", sa + i);int l = 1, r = 1e9, m;while (l < r) {m = (l + r) / 2;if (check(m)) r = m;else l = m + 1;}printf("%d\n", l);return 0;
}

Atcode120E 1D Party相关推荐

  1. 理解透彻--802.1d,802.1w,802.1s与802.1q

    原文链接:http://blog.sina.com.cn/s/blog_9950926401018bj6.html 照片之类的就在原文链接里面看吧.这里就不复制啦. 算啦,我先简要总结一下: STP( ...

  2. 了解1D和3D卷积神经网络|Keras

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 译者|Arno 当我们说卷积神经网络(CNN)时,通常是指用于图像 ...

  3. android将矩阵转换成字节数组,android-使用OpenGL矩阵转换将纹理从“ 1D”映...

    (针对这个问题,我正在尝试研究解决this other one的想法) 如果我在内存中有一个标准的2D数组,其尺寸为width和height,则可以将其转换为一个长度为width * height的一 ...

  4. 手把手教你使用 1D 卷积和 LSTM 混合模型做 EEG 信号识别

    本文是由CSDN用户[Memory逆光]授权分享.主要介绍了使用 1D 卷积和 LSTM 混合模型做 EEG 信号识别.感谢Memory逆光! 内容包括:1. 数据集(1.1 数据集下载.1.2 数据 ...

  5. 1D target tensor expected, multi-target not supported

    pytorch 交叉熵损失计算时报错了: 1D target tensor expected, multi-target not supported if __name__ == '__main__' ...

  6. ValueError: Masked arrays must be 1-D

    ValueError: Masked arrays must be 1-D 使用numpy画散点图出现以上问题.(<机器学习-算法原理与编程实践>第7页) 原代码如下:

  7. 成功解决ValueError: Expected 2D array, got 1D array instead: Reshape your data either using array.reshap

    成功解决ValueError: Expected 2D array, got 1D array instead: Reshape your data either using array.reshap ...

  8. 《python机器学习经典实例》Expected 2D array, got 1D array instead和Reshape your data either using array.问题(已解决)

    问题描述: ValueError: Expected 2D array, got 1D array instead: array=[2.  1.5]. Reshape your data either ...

  9. 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom ...

最新文章

  1. Linux常用命令的简单实用
  2. 分组表管理之获取用户组表列表数据
  3. CodeForces - 946E Largest Beautiful Number(贪心+模拟)
  4. java string blob_java String类型转换为Blob类型
  5. oracle sql优化指导,基于Oracle的sql优化(1)
  6. jsf入门实例_JSF selectManyListBox示例教程
  7. 华为鸿蒙os2.0更新,鸿蒙OS2.0更新了吗?更新方法、更新包大小、使用体验等都来了...
  8. 解构控制反转(IoC)和依赖注入(DI)
  9. TextBox设置ReadOnly属性后后台得不到值解决方法 [转]
  10. 基于java jsp的铁路售票系统(火车票预订)ssh框架
  11. JavaWeb播放视频实现断点续传、分片上传
  12. 软考高级 真题 2017年上半年 信息系统项目管理师 论文
  13. 文本转思维导图(xmind)
  14. 百度“文心一言”首批生态合作伙伴公布,Moka接入打造人力资源数字化人AI服务
  15. 智安网络丨居安思危·洞见未来 —— 智安网络安全周报
  16. CSS3字体样式及高级特效
  17. 杰理之AI协议之CMD_SET_BLE_VISIBILITY命令格式【篇】
  18. ScriptManager脚本管理器
  19. UVA - 12325 Zombie's Treasure Chest 暴力
  20. [浅析]UE4物理系统

热门文章

  1. iOS -- 使用蒲公英进行内测
  2. Android刘海屏、水滴屏全面屏适配详解,androidui基础教程
  3. 您的系统存在未授权的Bluetooth适配器,拔除或禁用该设备(蓝牙问题)
  4. CISCO-路由器交换机密码恢复
  5. 提高组CSP-S初赛模拟试题整理
  6. 触及办事质量黑白、是否跟商家承诺的一致
  7. Skynet项目搭建
  8. [论文阅读] (26) 基于Excel可视化分析的论文实验图表绘制总结——以电影市场为例
  9. EXCEL表格序列号
  10. 散列 pat1134