首页 > 其他分享 >P9000 [CEOI2022] Measures 题解

P9000 [CEOI2022] Measures 题解

时间:2024-06-08 09:44:25浏览次数:26  
标签:mn frac int 题解 Measures CEOI2022 le mx

思路

简单题。

考虑任意两点之间的限制。

任意两点合法时必须要满足:

\[\frac{d(j-i)-(a_j-a_i)}{2}\le t(i\le j) \]

所以答案即为:

\[\max_{i \le j}\frac{d(j-i)-(a_j-a_i)}{2} \]

使用线段树简单维护即可。

时间复杂度:\(O((n+m)\log (n+m))\)。

Code

#include <bits/stdc++.h>
using namespace std;

const int N = 1e6;

int n, m, d, a[N], id[N];
long long t[N], g[N], mn[N], mx[N];
pair<int, int> s[N];

inline void upd(int p, int l, int r, int x, int v) {
  if(l == r) return mn[p] = mx[p] = v + g[p], void();
  int mid = (l + r) >> 1, ls = mid << 1, rs = mid << 1 | 1;
  if(x <= mid) upd(ls, l, mid, x, v);
  else mn[ls] += d, mx[ls] += d, g[ls] += d, upd(rs, mid + 1, r, x, v);
  mn[p] = g[p] + min(mn[ls], mn[rs]);
  mx[p] = g[p] + max(mx[ls], mx[rs]);
  t[p] = max({t[ls], t[rs], mx[ls] - mn[rs]});
}

int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> m >> d;
  memset(mn, 0x1f, sizeof mn);
  memset(mx, 0xef, sizeof mx);
  for (int i = 1; i <= n + m; i++)
    cin >> a[i], s[i] = {a[i], i};
  sort(s + 1, s + n + m + 1);
  for (int i = 1; i <= n + m; i++) id[s[i].second] = i;
  for (int i = 1; i <= n + m; i++) {
    upd(1, 1, n + m, id[i], a[i]);
    if(i > n) cout << t[1] / 2 << (t[1] & 1 ? ".5 " : " ");
  }
  return 0;
}

标签:mn,frac,int,题解,Measures,CEOI2022,le,mx
From: https://www.cnblogs.com/JiaY19/p/18238315

相关文章

  • CF1192B Dynamic Diameter 题解
    思路静态\(\text{toptree}\)板子题。定义我们使用簇来表示树上的一个连通块。可以按照如下方式定义一个簇:一个簇可以表示为三元组\((u,v,E)\),其中\(u,v\)为树的节点,称为簇的界点,\(E\)为一个边的集合,表示该簇包含的边,路径\((u,v)\)称作簇路径。\(u,v\)分别为上界......
  • 无限之环 题解
    五星压行大师\(lyh\)表示:这是难得能让他的代码长度打破百行大关的题目(182行)。首先,根据科技与狠活,本题可以黑白染色。源点联向白格,黑格连向汇点。发现每个格子都可以连向四个方向,所以可以建立四个点,代表水管连到了上下左右四个方向。设四元组\((x,y,z,p)\)表示水管初始状态......
  • 开车旅行|倍增优化dp+双端列表/set|题解
    题面:题面链接这题的思路值得借鉴,也是我做的第一道倍增优化dp题目.比较好的是题目的意思较为清晰,所以不再赘述.解析:这里我们可以非常直接的想到暴力模拟,因为第一眼看上去前七个点的数据范围是支持我们进行一个简单的预处理得到对应人在对应位置的决策的.(排序O(n×sqrt(......
  • [ABC107D] Median of Medians 题解
    题目大意:一个长度为$M$的序列的中位数为这个序列从小到大排序后第$\lfloor\fracM2\rfloor+1$个数,将这个序列的所有子段的中位数放入一个序列中,求这个序列的中位数。设一个序列$a$的中位数为$x$,那么$a$中至少会有一半的数大于等于$x$,并且$x$是$a$中满足这个条件......
  • プログラミングコンテストチャレンジブック 题解
    题目大意:从$n$根木棒里选出六根拼成两个合法的三角形,使这两个三角形的周长和最大。考虑贪心,证明在后面。首先我们要知道一个三角形基本定理:较短两边长度之和大于最长边。那我们就根据这个定理先去寻找最大三角形的最长边。先排序,然后循环枚举,对于每个$a_i$,可以寻找到的最大......
  • [COCI2020-2021#2] Sjekira 题解
    题目大意:把一棵树完全分解,每次分解一条边的代价是这条边连接的两个连通块的最大点权之和,求最小代价。逆序模拟,既然题目要求将树完全分解,那我们就每次逆序连接当前权值最小的两个点,也就是贪心的思路。尝试将贪心的值写成一个表达式:$$\sum_{i=1}^na_i+\sum_{(u,v)\inE}\max(a......
  • [ABC036D] 塗り絵 题解
    题意题面讲挺清楚的就不简化了。思路树上求方案数,很明显是树上dp。设$dp_{i,0/1}$表示第$i$个点涂成白/黑色的方案数。当前结点如果为白色,那么它的子节点涂成什么颜色都没关系,根据分步乘法原理,将它子结点涂成白/黑色的方案数之和乘起来即可;当前结点如果为黑色,那么它的子......
  • [ABC126D] Even Relation 题解
    题意对一棵有$N$个点,$N-1$条边的树进行黑白染色,使得每两个距离为偶数的点颜色都一致。思路首先让我们回顾一下加法的性质:偶$+$偶$=$偶奇$+$奇$=$偶偶$+$奇$=$奇不难看出,距离为偶数的关系是可以传递的,而距离为奇数的关系不行。我们只需要做一遍dfs,对一个......
  • [ABC191E] Come Back Quickly 题解
    题面:给你一个$n$个点$m$条边的有向图,第$i$条边$a_i$,$b_i$,$c_i$,表示一条单向边从$a_i$到$b_i$,长度为$c_i$,可能会有重边和自环。问能否从第$i$号点出发然后回到该点形成一个环?可以则输出最短时间,否则输出$-1$。思路:不难发现本题考查的是最短路。观察题面,发现边数......
  • [ABC126F] XOR Matching 题解
    很好的构造题。题意请构造一个长度为$2^{m+1}$的序列$a$,该序列满足:$\foralli\in[1,2^{m+1}],a_i\in[0,2^m-1]$且每个数都恰好出现两次。对于任意一对$(i,j)$满足$a_i=a_j$,$a_i\oplusa_{i+1}\oplus\cdots\oplusa_{j-1}\oplusa_j=k$。$\oplus$表......