首页 > 其他分享 >Codeforces Round 965 (Div. 2) 题解

Codeforces Round 965 (Div. 2) 题解

时间:2024-08-11 10:39:23浏览次数:6  
标签:965 log 题解 复杂度 median sumq sump Delta Div

个人难度顺序:A < D < B < C < E。

A. Find K Distinct Points with Fixed Center

如果 \(k\) 是偶数,构造 \((x_c + i, yc + i)\),其中 \(- \frac{k}{2} \le i \le \frac{k}{2}\)。
对于 \(k\) 是奇数,先加一个点 \((xc, yc)\),然后就变成偶数的情况了。

B. Minimize Equal Sum Subarrays

先猜只有 \([1, n]\) 的和相等。
做前缀和,问题就变成了 \(sump_{r} - sump_{l} \neq sumq_{r} - sumq_{l}\)。
移项可得 \(sump_{r} - sumq_{r} \neq sump_{l} - sump_{l}\)。
这就是在说,对于 \(i \neq n\),\(\Delta_i = sumq_i - sump_i\) 互不相等。

然后枚举构造方式,发现可以构造 \(q_i = p_i \bmod n + 1\)。
不难发现,如果 \(p_i < n\),则 \(\Delta_i = \Delta_{i - 1} + 1\);如果 \(p_i = n\),则 \(\Delta_i = \Delta_{i - 1} - (n - 1)\)。
观察到只有 \(\Delta_0 = \Delta_n = 0\),所以这个构造是对的。

C. Perform Operations to Maximize Score

只会没有脑子的做法。
首先发现,让中位数增大的代价一定不比让 \(a_i\) 增大的代价小。
所以说对于 \(b_i = 1\) 的 \(i\),我们一定是让 \(a_i\) 变为 \(a_i + k\),贡献为 \(a_{i} + k + \operatorname{median}(c_i)\),删掉一个数是 \(median\) 的排名变化是 \(O(1)\) 的,可以暴力。
对于 \(b_i = 0\) 的 \(i\),我们要让 \(\operatorname{median}(c_i)\) 尽可能大。

考虑如果只有一个 \(b_i = 0\)。
求中位数我们会二分一个 \(mid\),将 \(a_i \le mid\) 的位置标记为 0,其余位置标记为 1。
如果 0 的数量小于中位数的排名,就说明 \(\operatorname{median}(c_i) > mid\),所以我们的目标是让 0 的数量尽可能少。
这一步可以贪心去做,就是将每个位置按从 0 变 1 的代价从小到大排序,然后从前往后取,知道代价大于 \(k\)。
这样就完成了 check,可以通过先从大到小排序将 check 优化到 \(O(n)\)。

现在我们有很多个 \(b_i = 0\),考虑整体二分。
发现 \(b_i = 0\) 的位置并不能是 0 的个数改变,所以 check 和上面是一样的。
然后就做完了。

时间复杂度 \(O(n \log V)\)。

D. Determine Winning Islands in Race

如果 Elsie 能一步跨过 Bessie 走过的路,那么他就赢了,也就是说只有额外边能决定胜负。
所以先求出从 1 到每个点 \(u\) 的距离 \(dis_u\),然后枚举每条额外边 \((u, v)\)。
发现如果 \((u, v)\) 这条边只能让 Elsie 在 \((u, v - dis_u - 1)\) 这几个点赢。
求答案的话就差分一下,时间复杂度 \(O(n)\)。

E1. Eliminating Balls With Merging (Easy Version)

只会笨蛋做法。
首先你会暴力,就是枚举每个位置 \(i\),维护它能吸收的区间 \([l, r]\),然后 \(l\) 和 \(r\) 分别往两边扩。
但你仔细想想,如果你跨过了一个原本不能跨过的位置,那么 \(a_i\) 一定是翻倍的,所以只会扩展 \(O(\log V)\) 次,每次扩展可以通过 ST 表+二分实现。
时间复杂度 \(O(n \log n \log V)\)。

E2. Eliminating Balls With Merging (Hard Version)

考虑在上一个题的基础上分别求出 \(l\) 扩展到 1 时 \(r\) 能扩展的最大位置和最小位置,这样做个前缀和就好了。
时间复杂度 \(O(n \log n \log V)\)。
P9530 [JOISC2022] 鱼 2 的超级弱化版。

标签:965,log,题解,复杂度,median,sumq,sump,Delta,Div
From: https://www.cnblogs.com/definieren/p/18353122

相关文章

  • Codeforces Round 965 (Div. 2) 补题记录(A,B,D,E1)
    speedforcesagain~A<E1<<B<D<<CA若\(k\equiv1(\bmod2)\),则构造\((x,y)\),\((x-1,y)\),\((x+1,y)\),\((x-2,y)\),\((x+2,y)\),\(\ldots\)。否则构造\((x-1,y)\),\((x+1,y)\),\((x-2,y)\),\((x+2,y)\),\(\ldots\)。#pra......
  • ABC366-D 题解
    三维前缀和板子。三维前缀和可以类似二维前缀和来做,先给一下二维前缀和数组的计算方法:\[sum_{i,j}=a_{i,j}+sum_{i-1,j}+sum_{i,j-1}-sum_{i-1,j-1}\]同样的,可以写出三维前缀和数组的计算方法:\[sum_{i,j,k}=a_{i,j,k}+sum_{i,j,k-1}+sum_{i,j-1,k}+sum_{i-1,j,k}-sum_{i,j-1,k......
  • [COCI2015-2016#3] NEKAMELEONI 题解
    前言题目链接:洛谷。题意简述你要维护一个序列\(a_i\in[1,k]\)(\(k\leq50\)),支持:单点修改;询问最短的包含全部\(1\simk\)的自区间长度,或报告无解。题目分析我想到了两种做法,写题解以加深印象。方法\(1\):直接用线段树维护只有单点修改,尝试用线段树维护分治。考虑......
  • AtCoder Beginner Contest 366 C,D题解
    C-BallsandBagQuery题解题意没什么好说的,给出q次查询,进行求解思路很简单的一道题,但这篇题解的作用是引出unordered_set,这个东西的作用类似set,但没有排序,相当于哈希。unordered_set有几种操作,接下来介绍三种insert,没什么可说的,普通的插入erase,进行弹出size,返回大......
  • ABC 366 题解
    AtCoderBeginnerContest366题解:\(Problem\hspace{2mm}A-Election\hspace{2mm}2\)题目链接opinion:很显然,当一个人的票数大于等于\(\lceil\frac{n}{2}\rceil\)时此人一定当选。(或可理解为投票结果一定固定。)依次判断两人即可。code:#include<bits/stdc++......
  • CF1674G Remove Directed Edges 题解
    CF1674G给出一个\(n\)点\(m\)边的有向无环图,你需要从中移除一些边,使得对于每一个点,其入度减少(如果原来有入边),出度也减少(如果原来有出边)。当删完边以后,如果有一个点集,满足对于任两点\((i,j)\)可以从\(i\)走到\(j\)或可以从\(j\)走到\(i\),那就称其为可爱的。现在要......
  • CF1863E Speedrun 题解
    CF1863E你在玩一个游戏,要完成\(n\)个任务。其中对于每个任务\(i\),它只能在某一天的第\(h_i\)时刻完成。游戏每天有\(k\)个小时,分别编号为\(0,1,...k-1\)。给出\(m\)对任务间的依赖关系,\((a_i,b_i)\)表示\(a_i\)必须比\(b_i\)先完成。保证依赖关系不形成环。完......
  • 洛谷 P10852 Awaken——题解
    洛谷P10852题解传送锚点摸鱼环节【MX-X2-T1】「CfzRound4」Awaken题目背景能否等到梦醒了的时候。题目描述月做了一个梦。在梦中,她拿到了一个长度为\(n\)的整数序列\(a_1,\ldots,a_n\),其中\(\bm{n\ge5}\)。梦醒了。月忘记了这个序列中的一部分元素,留下了空白......
  • P4933 大师 题解
    题目传送门思路动态规划看到题目就想到了最长上升子序列。类比最长上升子序列,发现多了一个要求,可以多开一维。设\(f_{i,j}\)表示以\(i\)为结尾,\(j\)为公差的序列的长度(点的个数$-1$),那么答案就为\[\sum_{i=1}^{n}\sum_{j=-\max(v)}^{\max(v)}f_{i,j}\]看上去......
  • ABC201E Xor Distances 题解
    ABC201EXorDistances题解题目大意给定一个带权树,求树上每两点的简单路径上的边权的异或和的和。形式化的,定义\(dis(i,j)\)为\(i\)到\(j\)的简单路径上的边权的异或和,求\(\large\sum\limits_{i=1}^n\sum\limits_{j=i+1}^n\text{dis}(i,j)\)。Solve令\(\largef(u)=......