Atcode120E 1D Party
题面
题目链接
解题思路
我们能够观察出如下性质:
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相关推荐
- 理解透彻--802.1d,802.1w,802.1s与802.1q
原文链接:http://blog.sina.com.cn/s/blog_9950926401018bj6.html 照片之类的就在原文链接里面看吧.这里就不复制啦. 算啦,我先简要总结一下: STP( ...
- 了解1D和3D卷积神经网络|Keras
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 译者|Arno 当我们说卷积神经网络(CNN)时,通常是指用于图像 ...
- android将矩阵转换成字节数组,android-使用OpenGL矩阵转换将纹理从“ 1D”映...
(针对这个问题,我正在尝试研究解决this other one的想法) 如果我在内存中有一个标准的2D数组,其尺寸为width和height,则可以将其转换为一个长度为width * height的一 ...
- 手把手教你使用 1D 卷积和 LSTM 混合模型做 EEG 信号识别
本文是由CSDN用户[Memory逆光]授权分享.主要介绍了使用 1D 卷积和 LSTM 混合模型做 EEG 信号识别.感谢Memory逆光! 内容包括:1. 数据集(1.1 数据集下载.1.2 数据 ...
- 1D target tensor expected, multi-target not supported
pytorch 交叉熵损失计算时报错了: 1D target tensor expected, multi-target not supported if __name__ == '__main__' ...
- ValueError: Masked arrays must be 1-D
ValueError: Masked arrays must be 1-D 使用numpy画散点图出现以上问题.(<机器学习-算法原理与编程实践>第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 ...
- 《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 ...
- 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:
决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom ...
最新文章
- Linux常用命令的简单实用
- 分组表管理之获取用户组表列表数据
- CodeForces - 946E Largest Beautiful Number(贪心+模拟)
- java string blob_java String类型转换为Blob类型
- oracle sql优化指导,基于Oracle的sql优化(1)
- jsf入门实例_JSF selectManyListBox示例教程
- 华为鸿蒙os2.0更新,鸿蒙OS2.0更新了吗?更新方法、更新包大小、使用体验等都来了...
- 解构控制反转(IoC)和依赖注入(DI)
- TextBox设置ReadOnly属性后后台得不到值解决方法 [转]
- 基于java jsp的铁路售票系统(火车票预订)ssh框架
- JavaWeb播放视频实现断点续传、分片上传
- 软考高级 真题 2017年上半年 信息系统项目管理师 论文
- 文本转思维导图(xmind)
- 百度“文心一言”首批生态合作伙伴公布,Moka接入打造人力资源数字化人AI服务
- 智安网络丨居安思危·洞见未来 —— 智安网络安全周报
- CSS3字体样式及高级特效
- 杰理之AI协议之CMD_SET_BLE_VISIBILITY命令格式【篇】
- ScriptManager脚本管理器
- UVA - 12325 Zombie's Treasure Chest 暴力
- [浅析]UE4物理系统