首页 > 其他分享 >Codeforces 专区

Codeforces 专区

时间:2024-03-07 17:37:41浏览次数:26  
标签:专区 le 题目 limits text sum Codeforces mex

Codeforces Round #932(Div.2)

怎么只会 A 啊。

\(\text{Problem A}\)

题目大意

对于一个字符串 \(s\),可以进行 \(n\) 次操作(\(n\) 为偶数),每次操作有两种形式:

  1. 令 \(t\) 为 \(s\) 的反串,\(s = s + t\)。
  2. 令 \(t\) 为 \(s\) 的反串,\(s = t\)。

要求操作完后 \(s\) 的字典序最小,并输出 \(s\)。

\(1 \le n \le 10^9, 1 \le |s| \le 100\)。

题目思路

考虑到一个字符串越短越好,所以我们尽量是用第二种形式的,发现如果 \(s\) 比 \(s\) 的反串的字典序要小,那么进行 \(n\) 次操作 \(2\) 后必然还是 \(s\),显然是字典序最小的。

但是如果 \(s\) 比 \(s\) 的反串的字典序要大,那么显然最优的做法是第一次进行操作 \(1\),后面进行操作 \(2\),否则到最后就反不到字典序最小的串了,具体来说,答案就是 \(s\) 的反串拼上 \(s\)。

\(\text{Problem B}\)

题目大意

给你一个长度为 \(n\) 的序列 \(a\),要求分成若干段(段数不为 \(1\)),使得每段的 \(\text{mex}\) 相同。

\(1 \le n \le 10^5, 0 \le a \le n\)。

题目思路

对于区间仔细分析后发现是可以合并的,具体来说:

  • 对于 \(\text{mex}(i, k) = \text{mex}(k + 1, j) = x\),可以得出 \(\text{mex}(i, j) = x\)。

简单证明一下就是考虑 \([i, k]\) 中没有出现 \(x\),\([k + 1, j]\) 中也没有出现 \(x\),那么 \([i, j]\) 中也没有出现 \(x\),因此得 \(\text{mex}(i, j) = x\)。

那么问题就变得很简单了,因为划分 \(k\) 段合法是划分 \(2\) 段合法的充分条件,所以只要能划分出 \(2\) 段就可以了,预处理前缀/后缀 \(\text{mex}\) 就好了。

\(\text{Problem C}\)

题目大意

给你 \(n\) 个二元组 \((a_i, b_i)\),要求从中选出 \(k\) 个二元组并任意打乱,设其下标集合 \(S = \{p_1, p_2, ..., p_k\}\),要求在 \(\sum\limits_{i = 1}^k a_i + \sum\limits_{i = 2}^k |b_{p_i} - b_{p_{i - 1}}| \le l\) 的情况下将 \(k\) 最大化。

\(1 \le n \le 2000\)。

题目思路

我们考虑一个事情,如果选出了 \(k\) 个且下标集合 \(S = \{p_1, p_2, ..., p_k\}\),那么当 \(p_1 \le p_2 \le ... \le p_k\) 的时候是这个集合所有顺序排列中值最小的,此时的代价是 \(\sum\limits_{i = 1}^k a_i + b_{p_k} - b_{p_1}\)。

因此我们考虑枚举这个集合中的下标最小值和下标最大值,在这中间,很明显元素是按照 \(a\) 的大小从小往大放,直到放到不能放为止,这可以用堆来做,发现是三方的,然后我们在枚举最大值的时候顺便加进去计算,时间复杂度就是 \(O(n^2 \log_2 n)\)。

\(\text{Problem D}\)

题目大意

给定一个大小为 \(n\) 的集合 \(S\),其中元素大小 \(\le c\),问满足以下条件的数对 \((x, y)\) 的个数有多少对:

  1. \(x, y \in \mathbb{Z}, 0 \le x \le y \le c\)。
  2. \(x + y \notin S, y - x \notin S\)。

\(1 \le n \le 3 \times 10^5, 0 \le c \le 10^9\)。

题目思路

首先发现这个一看就很容斥的样子,考虑容斥完我们要计算什么:

\[ans = \sum_{i = 0}^c \sum_{j = i}^c 1 - \sum_{i = 0}^c \sum_{j = i}^c [i + j \in S] - \sum_{i = 0}^c \sum_{j = i}^c [j - i \in S] + \sum_{i = 0}^c \sum_{j = i}^c [i + j \in S] \times [j - i \in S] \]

考虑第一项的值,就是 \(\frac{(c + 1)(c + 2)}{2}\)。

考虑第二项的值,发现对于每一个 \(i \le \frac{s_i}{2}\),都有一个与之对应的 \(j\) 形成单射,就是 \(\sum\limits_{i = 1}^n \left(\frac{s_i}{2} + 1\right)\)。

考虑第三项的值,发现对于每一个 \(s_i \le i \le c\),都有一个与之对应的 \(j\) 形成单射,就是 \(\sum\limits_{i = 1}^n \left(c - s_i + 1\right)\)。

考虑第四项的值,在此之前,我们要想明白一个事情,对于一对 \((i, j)\) 如果产生贡献,那么只会对应到一组 \((s_x, s_y)\) 上,换句话说,\(i = \frac{s_x - s_y}{2}, j = \frac{s_x + s_y}{2}\),当且仅当满足这个条件,才会对答案产生贡献,不难发现就是奇数的 \(s\) 两两组合,偶数的 \(s\) 两两组合。

标签:专区,le,题目,limits,text,sum,Codeforces,mex
From: https://www.cnblogs.com/alexande/p/18059254

相关文章

  • Codeforces Round 931div2补题
    B.YetAnotherCoinProblem真[https://www.bilibili.com/video/BV1o2421M7pV/]不同硬币之间有倍数关系,使得一定数量后的小硬币可以被大硬币替代达到最优方案,而每个小硬币在最优下有可能的数量如下,进行枚举后找到最优方案。1:不多于2个(3个1会被3替代)3:不多于一个(2个3......
  • 1935.Codeforces Round 932 (Div. 2) - sol
    20240306逊哎~打一半去写申请书然后12点睡觉,相对成功!第二天早上起来把赛时发愣的C和F切了。CodeforcesRound932(Div.2)A.EntertainmentinMACCongratulations,youhavebeenacceptedtotheMaster'sAssistanceCenter!However,youwereextremelybore......
  • Codeforces Round 932 (Div. 2)
    CodeforcesRound932(Div.2)A-EntertainmentinMAC解题思路:如果翻转字符小于原字符,那么一直翻转即可。否则,翻转\(n-1\)次,然后添加一次。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;typedefdoubledb;......
  • Codeforces Round 930 (Div. 1)
    Preface虽然难得有Div1的CF,但由于在周四晚上学校要断电就没打这两天有空去补了下发现好像错过了最适合我的一场,AB都是一眼题,C是经典图论建模,D是DS典题没有Counting我直接爽飞,不过估计现场打的话写个ABC差不多了,D的码量还是挺大的A.BitwiseOperationWizard很有意思的一个......
  • CodeForces 1540D Inverse Inversions
    洛谷传送门CF传送门小清新题。首先容易发现每个合法的\(b\)唯一对应一个排列,大概就是每个时刻排列元素的相对顺序,然后插入到相应的位置。但是这样太麻烦了。发现题目只要求求单点的\(p\)值。这应该有更简单的方法。考虑令\(b_i\getsi-b_i\)表示\(p_i\)在前缀\(......
  • Codeforces edu 156 C题
    https://codeforces.com/contest/1886/problem/C思路这道题的核心问题是:给你一个字符串s,你要删除k个字母,你要找出删除k个字母后字典序最小的s。为了使字典序最小,我们就应该把字符串删成递增的样子stringtmp="";//tmp用来存删完后的字符串s+='$';//s的末尾加一个比'......
  • Educational Codeforces Round 162 E 点分治 虚树 树形dp
    传送门给出\(n\le2\cdot10^5\)的一棵树,每个节点有一个颜色。求出路径长度为\(2\)路径首端和尾端拥有相同颜色,且路径上其他点不存在相同颜色的点的路径条数。当时看错题了,把颜色抽出来后没法做了。后来感觉能点分治,然后把题看对了,遂写了一个极其抽象的点分治。除此之外,把某......
  • Codeforces Round 930 (Div. 1) C dij 建图
    离较好的方法差一点。考虑到了可以按照枚举属性并按照当前属性从小到大排序,这样可以从一个点到大另一个点。设当前在排序序列中点为\(i\)当\(i\)走向\(k,i>=k\)需要支付\(c_k\)的代价。而\(i\)到\(k,i<k\)则需\(k-i+c_k\)的代价。则对于不同的\(i\)由于代价没有连续性,当时想......
  • Codeforces Round 892 (Div. 2)
    \[\large\text{Round7:CodeforcesRound892(Div.2)(VP)}\]一言:所谓人,无论是谁到了最后,都会形单影只。——悠久之翼2最令人无语的是最后三分钟交代码的时候把\(\text{D}\)题交到了\(\text{E}\)题,结果能过的代码直接没有过。。\(\text{D:AndreyandEscapefr......
  • Educational Codeforces Round 120
    \[\large\text{Round1:EducationalCodeforcesRound120(VP)}\]一言:孤独的人不会伤害别人,只会不断地伤害自己罢了。——我的青春恋爱物语果然有问题\(\text{C:SetorDecrease}\)后四题唯一场切题,(别问我为什么只有这一道)。读完题之后,理一下思路,可以很容易的想到......