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

Codeforces Round #843 (Div. 2) 题解

时间:2023-01-10 23:12:16浏览次数:46  
标签:dots 843 题解 大意 序列 题目 Div 我们

A

题目大意

给你一个只含字母 a, b 字符串,要把它拆分成三段,使得其中间那段要么同时小于等于两边要么同时大于等于两边。

题解

由于只有 a, b 我们可以分讨解决

如果 \([2, \dots, n-1]\) 中间有 b,那么中间那段选 \([2, \dots, n-1]\) 一定合法(因为如果前面的字符相同长度长的字典序更大)

如果中间没有 b,那么我们就找到第一个字母 a 的位置,中间那个即选第一个 a,一定合法

B

题目大意

给定一个序列 c,定义 \(f(S)\) 为 \(S\) 中所有元素的或的和,要求是否存在序列 \(c\) 的两个子区间使得 \(f(A) = f(B)\)

题解

注意到如果存在这样的两个子区间,那么一定存在一个元素使得整个序列的或和在删掉这个元素后不改变。

为什么?因为我们这个元素在他这个子区间内贡献的 1 的位置在另一个子区间中一定有一个对应的,所以这个位置就不重要了。

所以我们枚举这个位置判断即可

C

题目大意

定义 \(f(l, r) = l \& (l+1)\&(l+2)\&\dots\&r\)

给你 \(n, x\)

要求最小的 \(m\) 使得 \(f(n, m) = x\)

题解

其实有单 \(log\) 做法,但是我比较想偷懒,写了个 \(log^2\) 做法,结果反而写的更久。

显然与运算具有单调性,当 \(l\) 固定 \(r\) 增加时,\(f(l, r)\) 一定不上升,所以我们可以二分。

考虑我们要怎么 check,可以单独考虑每一位,如果我们的 \(r\) 已经越过了一条线,那么 \(f(l, r)\) 的这一位一定是 \(0\),不难发现这一位最小应该是 \(2^k - (2^k-1) \& n\)

可惜我傻逼把 \(2^k-1\) 写成了 \(2^{k-1}\),图图增加了一个小时的调试时间,哈哈。

D

题目大意

给定一个序列 \(\{a_n\}\),\((i, j)\) 之间有一条长度为 \(1\) 的边当且仅当 \(\mathcal{gcd}(a_i, b_j) \not =1\),求 \(s\) 到 \(t\) 的最短路。

题解

又看错题了……

简单的套路题,不难想到两个点之间有边当且仅当他们之间有公因数,所以我们可以把每个点向他们的所有因数连边,然后直接跑最短路就完事了。

E

题目大意

给定一个序列 \(\{a_n \}\)。

定义一个操作为选择这个序列的一个子序列,然后将子序列上的奇数位加一偶数位减一或反之。

题解

看到每次只能加减一,不难想到我们可以转化这道题。

把原来的数正的化成 \(x\) 个 \(1\)

负的化成 \(x\) 个 \(-1\)

\(1\) 和 \(-1\) 一定是配对的,而且你选择的前缀和不是全负的就是全正的。

标签:dots,843,题解,大意,序列,题目,Div,我们
From: https://www.cnblogs.com/luanmenglei/p/17041646.html

相关文章

  • CF1783 A-F 题解
    比赛链接:https://codeforces.com/contest/1783连续三场出4题,还行(其实感觉有两场的E都是会做的)A水题//bySkyRainWind#include<bits/stdc++.h>#definemprmake_pai......
  • 「JOI Open 2022」Giraffes 题解
    设我们将要给出的观感好的排列为\(q\),我们希望求出\(\sum[p_i=q_i]\)的最大值(这里指不移动的长颈鹿个数)。结论一:当且仅当左右端点有当前区间最大值或者最小值时条件才......
  • 题解1
    离散化1.为什么要离散化当数据很大的时候,以至于我们不能直接使用它的时候,就要考虑将其用另外一种形式表达,通常是将其映射为数组下标。2.离散化本质本质:映射3.离......
  • charls抓包的乱码问题解决
    1.在charls的安装目录下,去修改配置文件的值----Charles.ini,内容如下   2.SSLproxysetting设置如下图  3.顺便说一下,charls抓取https的包,一定要先安......
  • Educational Codeforces Round 141 (Rated for Div. 2)(B,C,D)
    EducationalCodeforcesRound141(RatedforDiv.2)(B,C,D)BB这个题的大意是我们需要构造一个矩阵,我们需要这个矩阵的一个位置和它相邻位置的绝对值的不同数量最多我猜......
  • docker中crontab无法执行导入计划任务问题解决
    问题描述:crontab无法执行导入计划任务解决: ⊙查看文件16进制 hexdump-c./crontab/defalut   发现有\r;crontab中只能直接\n⊙vim文件修改编码   setfile......
  • P3521 题解
    非线段树合并做法。复杂度多一只log,但是好写。跳过不重要的部分,直达核心——如何在递归时计算两棵子树互相的贡献?题解区清一色线段树合并从值域角度考虑。但是显然倍......
  • [IOI2000]邮局 题解
    简要题意线段上有\(V\)个村庄,现在要建\(P\)个邮局,使每个村庄到最近的邮局的距离之和最小。50分做法设\(dp[i][j]\)表示第一个村庄到第\(i\)个村庄,建了\(j\)个......
  • Educational Codeforces Round 141 (Rated for Div. 2)
    A-MakeitBeautiful题意:给出一个序列a,要求重新排列它,使前\(i-1\)个数之和不等于\(a_i\)思路:数据范围很小。用桶存数字,然后由大到小每种数字为一组循环输出即可赛时......
  • Codeforces Round #645 (Div. 2) A-D
    A.ParkLighting题意:用1*2的方格去填充n*m的格子,可以重叠摆放,至少需要多少个分析:不重叠的情况下,横着摆与竖着摆的最少数量是一样的,贡献为\(\lfloor\frac{n......