[ARC120E]1D Party

2024-03-16 22:58
文章标签 party 1d arc120e

本文主要是介绍[ARC120E]1D Party,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1D Party

题解

我们可以将原来的序列随时间变化转化成一个图像,纵轴代表时间,横轴代表 A A A的值。

那么我们可以得到这样一个图像:

image-20210529082858690

其中不同颜色代表不同的点的运动路径。

由于要最优,我们肯定要让每个点都一直处于运动状态,我们发现每个点大概有一下两种运动状态:

  • 先向左走直到与另一个点相遇,再一直向右走。
  • 先向右走直到与另一个点相遇,再一直向左走。

无论如何,与别的点相遇时都一定会产生一个交点,然后拐弯。

我们可以考虑每个点都不拐弯,而是交换它们的目标对象,也就是 i i i i + 1 i+1 i+1第一次相遇后就让 i i i去与 i + 2 i+2 i+2相遇, i + 1 i+1 i+1 i − 1 i-1 i1去相遇。

这样我们的图像可以被转化成这个样子:

image-20210529083553135

我们相当于得到了无数个三角形连接而成的连通块,当这些三角形所有三角形都联通的时候所有点都是满足条件的。

而我们的答案相当于最高的三角形的最高的高度。

于是我们就很容易想到通过 d p dp dp去找到这个值,设 d p i dp_{i} dpi表示前 i i i个都满足条件的最小高度。

容易得到转移方程式:
d p i = min ⁡ j = 1 i − 2 ( m a x ( d p j , a i − a j − 1 2 ) ) dp_{i}=\min_{j=1}^{i-2}(max(dp_{j},\frac{a_{i}-a_{j-1}}{2})) dpi=j=1mini2(max(dpj,2ai<

这篇关于[ARC120E]1D Party的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817002

相关文章

CodeForces 404E Maze 1D

题意: 一个机器人在数轴上的0点  给一串指令机器人按照指令走  为了使机器人最后一步走到一个从来没来过的位置  我们可以在数轴上放石头  每次机器人被石头卡住他就跳过当前的那个指令  问  最少使用石头前提下  一共几种放石头方法 思路: 很容易想到如果最后一个指令是L  那么机器人一定会停在0点的左边  因为如果停在右边  最后一步一定走在之前来过的位置上  同理最后一个指令是R

CodeForces 404D Minesweeper 1D

题意: 一个字符串  ?可以被替换  *表示雷  数字表示旁边雷的个数  (就是扫雷游戏…)  问  这个串有几种可能的结构 思路: 画出所有转移dp就好了  画的思路就是 当前位置是什么符号  它前面是什么符号或符号组合 确定了前面的东西后  是不是也对后一位有要求(比如01后面一个必须是*) 代码: #include<cstdio>#include<cstrin

【POJ3268】【Silver Cow Party】【反向dij】【sizeof失效】

Silver Cow Party Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 15522 Accepted: 7039 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going

校赛 SDUT OJ2860生日Party(BFS)

题目地址:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2860 唉。。校赛的时候把这题用搜索的时间复杂度2^15次方想成了15^15次方。。。。所以没写。。。后来用的最短路的floyd算法改成了最长路做的,但有一些细节不好处理,调了会没调出来。。赛后才想到用暴搜不会超时。。于是补完线代后怒敲暴搜代码

hdu 1520 poj2342 anniversary party树形DP

每个节点要么选要么不选,和大多数选不选动归一样,来个dp[i][2],0表示不选,1表示选,那我们只要从叶子节点往根结点不断更新dp[i][0]和dp[i][1]就可以了。 状态转移方程:dp[i[[1] += dp[j][0]                       (当前选了,子节点必定不能选,然后累加)                        dp[i][0] += max

LeetCode contest 193 5436. 一维数组的动态和 Running Sum of 1d Array

Table of Contents 一、中文版 二、英文版 三、My answer 四、解题报告 一、中文版 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。   示例 1: 输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程

[图解]《分析模式》漫谈03-Party是什么

1 00:00:00,790 --> 00:00:03,930 今天我们来看一下,Party是什么 2 00:00:05,710 --> 00:00:07,470 当然我们这里说的不是政治的 3 00:00:07,880 --> 00:00:08,350 Party 4 00:00:09,230 --> 00:00:11,110 是《分析模式》里面的一个用词 5 00:00:14,860

【python】成功解决“ValueError: Expected 2D array, got 1D array instead”错误的全面指南

成功解决“ValueError: Expected 2D array, got 1D array instead”错误的全面指南 一、引言 在Python的数据分析和机器学习领域,尤其是使用NumPy、Pandas、scikit-learn等库时,经常会遇到各种类型错误。其中,“ValueError: Expected 2D array, got 1D array instead”错误是一

keras: CNN(1D)

怎样确认使用是keras还是tensorflow的keras? from tensorflow.keras.models import Sequential //tensorflow 实现的keras from keras.models import Sequential //common的keras 如果tf版本是: 2.0.0-beta1,tensorflow已经集成或者说实现了kera

Codeforces Global Round 17 C. Keshi Is Throwing a Party 题解 二分答案

Keshi Is Throwing a Party 题目描述 Keshi is throwing a party and he wants everybody in the party to be happy. He has n n n friends. His i i i-th friend has i i i dollars. If you invite the i i i-t