codeforce800

题目链接

题解

A CodeForces 1859A United We Stand

给定一个长度为n、包含整数的数组a。最初有两个空数组b和c。您需要将数组a的每个元素添加到数组b或c中的一个数组中,以满足以下条件:

  • 数组b和c都不是空的。更正式地说,让lb是数组b的长度,lc是数组c的长度。那么lb,lc≥1。
  • 对于任意两个指数i和j(1≤i≤lb,1≤j≤lc),cj不是bi的除数

输出可以获得的数组b和c,如果不存在,则输出−1。

分析

\(c_j \nmid b_i ===> c_j > b_i\)

所以只需要构造b数组的元素都小于c数组即可。

B CodeForces 1858A Buttons

安娜和凯蒂最后进了一个秘密实验室。

实验室里有a+b+c按钮。a按钮只能由安娜按下,b按钮只能由凯蒂按下,c按钮可以由他们中的任何一个按下。安娜和凯蒂决定玩一个游戏,轮流按下这些按钮。安娜第一个转弯。每个按钮最多可以按下一次,所以在某个时候,其中一个女孩将无法转动。

不会按按钮的女孩输了。决定如果两个女孩都打得最好,谁会赢。

分析

都先按c,这样能最大化自身效益。
直接计算先后手最多可按下的按钮数量即可。

先手可以按下的按钮数量为 a + c/2 + c%2,
后手可以按下的按钮数量为 b + c/2.

C CodeForces 1857A Array Coloring

给定一个由n个整数组成的数组 . 您的任务是确定是否有可能以两种颜色为其所有元素上色,从而使两种颜色的元素的和具有相同的奇偶性,并且每种颜色至少有一个元素上色。

例如,如果数组是[$1,2,4,3,2,3,5,4$],我们可以这样给它上色: [$\color{blue}{1},\color{blue}{2},\color{red}{4},\color{blue}{3},\color{red}{2},\color{red}{3},\color{red}{5},\color{red}{4}$],,蓝色元素的和是6,红色元素的和是18。.

分析

两种颜色和具有相同奇偶性,那么也就是偶数个数与奇数个数都是偶数个。

D CodeForces 1856A Tales of a Sort

Alphen有一个长度为n的正整数a的数组。
Alphen可以执行以下操作:

  • 对于从1到n的所有i,将ai替换为max(0,ai−1)。

Alphen将执行上述操作,直到a被排序,即a满足 a1≤a2≤…≤an。Alphen将进行多少次操作?在问题的约束下,可以证明Alphen将执行有限数量的运算。

分析

如果出现逆序对(前>后者),元素必定都降为最小值 0,下降次数就是最大的 ai。

E CodeForces 1855A Dalton the Teacher

Dalton 是一个班的老师,班上有n个学生,编号从1到n。教室里有n把椅子,编号也从1到n。最初,学生i坐在椅子pi上。保证p1,p2,…,pn是长度为n的全排列。

如果一个学生的号码和他/她的椅子号码不同,他/她的学生会很高兴。为了让所有的学生都开心,Dalton 可以反复执行以下操作:选择两个不同的学生并交换他们的椅子。让所有学生都开心所需的最少动作次数是多少?可以证明,在这个问题的约束下,用有限的动作让所有学生都感到高兴是可能的。

长度n的全排列是由从1到n的任意顺序的n个不同整数组成的数组。例如,[2,3,1,5,4]是全排列,但[1,2,2]不是全排列(2在数组中出现两次),[1,3,4]也不是全排列(n=3,但数组中有4)。

分析
每一次交换会使得两名选手高兴,
假设当前不高兴的选手(pi==i) 人数为 m,则需要交换 \(\lceil \frac{m}{2} \rceil\) 次。

F CodeForces 1853A Desorting

如果满足 \(a_1 \leq a_2 \leq \ldots \leq a_{n-1} \leq a_n\),则称长度为 \(n\) 的数组 \(a\) 已排序
Ntarsis有一个长度为 \(n\) 的数组 \(a\)
他被允许对其执行一种操作(零次或多次):

  • 选择一个索引 \(i (1 \leq i \leq n-1)\)
  • 将 1 添加到 \(a_1, a_2, \ldots, a_i\)
  • \(a_{i+1}, a_{i+2}, \ldots, a_n\) 中减去 1。

操作后,\(a\) 的值可能为负数。
确定使 \(a\) 未排序所需的最小操作次数。

分析

要使得数组未排序,也就是需要出现 \(a_i > a_{i+1}\),根据操作发现,
修改一个点的效率最高,修改相邻差值最小的点代价最低。

也就是 \(m = \min_{i=1}^{n} {( a_i - a_{i+1} )}\)
如果 \(m<0\) 也就是原序列未排序,操作次数为 0;否则操作次数为 \(\lfloor \frac{m}{2} \rfloor +1\)

G CodeForces 1851B Parity Sort

您有一个长度为n的整数a数组。您可以对给定的数组应用以下操作:

  • 交换两个元素ai和aj,使得 \(i \neq j\) 要么都是偶数,要么都是奇数。

通过执行任意次数(可能为零)的操作来确定是否可以按非递减顺序对数组进行排序。
例如,设 a=[7,10,1,3,2]。然后我们可以执行3个操作来对数组进行排序:

  1. 交换 a3=1 和 a1=7,因为1和7是奇数。我们得到 a=[1,10,7,3,2];
  2. 交换 a2=10 和 a5=2,因为10和2是偶数。我们得到 a=[1,2,7,3,10];
  3. 交换 a4=3 和 a3=7,因为3和7是奇数。我们得到 a=[1,2,3,7,10]。

分析

由于同奇偶性才能交换,那么当排序完成,每个位置的元素应当与初始元素的奇偶性相同。

H CodeForces 1851A Escalator Conversations

有一天,Vlad 很好奇在地铁扶梯上可以和谁交谈。共有 \(n\) 名乘客。自动扶梯共有 \(m\)级,所有梯级的高度从 \(1\)\(m\)依次递增,第 \(i\) 级的高度为 \(i \cdot k\)

Vlad 的身高是\(H\)厘米。两个身高分别为\(a\)\(b\)的人如果站在个不同的台阶上,并且他们之间的高度差等于台阶之间的高度差,那么他们可以在自动扶梯上进行对话。

例如,如果两个人的身高分别为\(170\)厘米和\(180\)厘米,以及\(m = 10, k = 5\)厘米,那么他们可以站在\(7\)\(5\)的梯级上,梯级之间的高度差等于两个人的身高差:\(k \cdot 2 = 5 \cdot 2 = 10 = 180 - 170\).还有其他可能的方法。

给定一个大小为\(n\)的数组\(h\),其中\(h_i\)表示第\(i\)个人的身高。Vlad 感兴趣的是他能在自动扶梯上与多少人交谈。

例如,如果\(n = 5, m = 3, k = 3, H = 11\)\(h = [5, 4, 14, 18, 2]\),Vlad 可以与身高为\(5\)的人交谈(Vlad 将站在\(1\)级、和身高 \(14\)的人进行对话(例如,Vlad 可以站在台阶 \(3\)上,而另一个人将站在台阶 \(2\)上)。Vlad 不能与身高为\(2\)的人交谈,因为即使他们站在自动扶梯的最高阶梯上,他们之间的身高差也是\(6\),而他们的身高差是\(9\)。Vlad 不能与自动扶梯上的其他人交谈,因此本例的答案是 \(2\)

分析

对于每个 \(h_i\) 计算出对应的台阶差值 t = abs(H-h[i]),最后检验 t是否是一个满足当前状态的值即可。

I CodeForces 1850C Word on the Paper

在一个8×8的点网格上,一个由小写拉丁字母组成的单词从上到下垂直地写在一列中。它是什么?

分析

暴力遍历每个点,对每个位置所在列向下进行单词的查询。

J CodeForces 1850B Ten Words of Wisdom

在“智慧十言”游戏节目中,有n名参与者,编号从1到n,每个人提交一份回复。第 i 个响应是ai 个单词长度,质量为bi。没有两个响应具有相同的质量,并且至少一个响应的长度最多为10。

该节目的获胜者是在所有不超过10个单词的回复中质量最高的回复。哪个回答是优胜者?

分析
使用结构体存储合理的回复 {i,a,b},需要求质量最高的回复,那么就按照质量进行降序排序后,第一个就是答案。

K CodeForces 1850A To My Critics

Suneet有三个数字a、b和c。 由于数学不是他的强项,他让你决定是否可以选择任意两位数字来使总和大于或等于10。 如果存在此类配对,则输出“YES”,否则输出“NO”。

分析
任意两个数的和大于等于10,那么最优解必然是最大的两个数的和。

L CodeForces 1849A Morning Sandwich

Monocarp总是以一份美味的三明治开始他的早晨。Monocarp制作的三明治通常由面包、奶酪和/或火腿组成。

三明治总是遵循以下公式:

  • 一块面包
  • 一片奶酪或火腿
  • 一块面包
  • 一片奶酪或火腿
  • 一块面包

所以它的顶部和底部总是有面包,它在面包和馅料之间交替,馅料是一片奶酪或火腿。每一片面包和每一片奶酪或火腿都被称为一层。

今天,Monocarp醒来后发现他有b片面包、c片奶酪和h片火腿。他的早餐三明治最多能有几层?

分析
如果将最底层的面包分开,那么对于上面的所有面包数量应当等同于对应的馅料的数量,所以答案为 \(1+2*min(b-1, c+h)\)

M CodeForces 1847A The Man who became a God

Kars对自己村子的狭隘心态感到厌倦和不满,因为他们满足于呆在原地,不想成为完美的生活方式。作为一名顶尖的发明家,Kars希望增强自己的身体,成为完美的生命形式。不幸的是,$n$ 名村民对他的想法产生了怀疑。第 $i$ 个村民怀疑他有犯罪嫌疑 $a_i$。每个村民都害怕Kars,所以他们组成一个小组,变得更有力量。

从 $l$ 到 $r$ 的村民群体的权力定义为 $f(l,r)$,其中

$f(l,r) = |a_l - a_{l+1}| + |a_{l + 1} - a_{l + 2}| + \ldots + |a_{r-1} - a_r|.$

这里,$|x−y|$ 是 $x-y$ 的绝对值,只有一个村民的组的力量为 $0$。

Kars想把村民分成恰好 $k$ 个相邻的小组,这样他们的力量之和就最小化了。形式化的,他必须找到 $k−1$ 个正整数,$1 \le r_1 < r_2 < \ldots < r_{k - 1} < n$ 使得 $f(1, r_1) + f(r_1 + 1, r_2) + \ldots + f(r_{k-1} + 1, n)$ 最小化。

帮助Kars找到 $f(1, r_1) + f(r_1 + 1, r_2) + ... + f(r_{k-1} + 1, n)$ 的最小值。

分析
要使得村民群体的权力最小,那么就是将相邻距离较大的优先分开。所以可以对相邻元素的差值绝对值进行排序,取前 \(k-1\) 作为分割点,剩余的和就是答案。

N CodeForces 1846B Rudolph and Tic-Tac-Toe

鲁道夫为三个玩家发明了井字游戏。它有着经典的规则,除了第三个玩加号的玩家。鲁道夫有一个3×3的场地——这是完成比赛的结果。每个字段单元格都包含一个叉、一个零、一个加号或什么都不包含。游戏由水平、垂直或对角线排列3个符号的玩家获胜。

鲁道夫想知道比赛的结果。要么三名球员中只有一人获胜,要么以平局告终。可以保证多个玩家不能同时获胜。

分析

暴力枚举每个点,对于每个位置判断同行,列,对角线是否存在胜者。

O CodeForces 1846A Rudolph and Cut the Rope

墙上钉了 n 颗钉子,第 i 根钉子钉在离地面 ai 米的地方,绳子的一端绑在上面。所有钉子都挂在不同的高度上。一颗糖果同时绑在所有绳子上。糖果系在一根绳子的末端,而这根绳子并没有系在钉子上。

要拿糖果,你需要把它放在地上。要做到这一点,鲁道夫可以割断一些绳子,一次一根。帮助鲁道夫找到得到糖果必须切割的最少绳索数量。

分析
如果要糖果落地,那么必然钉子的高度≤绳子长度,所以对于钉子的高度>绳子长度的绳子必然需要切割。

P CodeForces 1845A Forbidden Integer

给你一个整数n,你想要得到这个数。你可以取用从 1 到 k 的任意整数,整数 x 除外(没有整数 x)。

你可以取任意数量的这些整数(可能为零)。你能使取的整数的和等于n吗?

如果有多个解,打印任意一个即可。

分析
当 x≠1 时,那么 n 一定可以转化为 \(n=1*n\)
当 x=1 时,如果 k=1 或者 k=2,n是奇数,一定不存在答案;否则一定可以转化为 \(n=2a+3b\) 的形式。

Q CodeForces 1844A Subtraction Game

给定两个正整数a和b(a < b)。

对于一些正整数n,两个玩家将玩一个游戏,开始时有n个石头堆。他们轮流从堆中取出恰好a个或恰好b个石头。无法进行移动的玩家将输掉游戏。

找出一个正整数n,使得在这个游戏中后手的玩家有一个获胜策略。这意味着无论先手玩家如何行动,后手玩家都可以谨慎选择自己的移动(可能取决于先手玩家的移动),以确保获胜。

分析
考虑后手直接拿完,那么也就是无论先手拿什么,后手都有一次可拿且拿完所有石头。
\(n=a+b\)

R CodeForces 1843C Sum in Binary Tree

Vanya真的很喜欢数学。一天,当他在解另一道数学题时,他想出了一棵有趣的树。这棵树是按如下方式建造的。

最初,树只有一个编号为1的顶点,即树的根。然后,Vanya将两个孩子添加到其中,为他们分配连续的数字——分别为2和3。之后,他将按子顶点数的递增顺序将其添加到顶点,从2开始,为其子顶点指定最小未使用索引。因此,Vanya将有一个根在顶点1的无限树,其中每个顶点将恰好有两个子节点,并且顶点编号将按层顺序排列。

Vanya想知道,在这样一棵树中,从编号为1的顶点到编号为n的顶点的路径上,顶点数的和等于多少。由于Vanya不喜欢计数,他请你帮他找到这个和。

分析
按照构造方式得到一棵完全二叉树,从i=n开始向上查询,每次查询得到父节点为 i/2,当 i=1 即为根节点。

S CodeForces 1843B Long Long

今天Alex得到了数组 $a_1, a_2, \dots, a_n$,长度为n。他可以应用任意多个操作(包括零操作)来更改数组元素。

在1操作中,Alex可以选择任意l和r,使得 1≤l≤r≤n,并将数组中从l到r(包括l和r)的所有元素乘以−1。换句话说,Alex可以在1次操作中将子阵列$[a_l,a_{l+1},\dots,a_r]$ 替换为 $[-a_l,-a_{l+1},\dots,-a_r]$。

例如,设 n=5,数组为 $[1,−2,0,3,−1],l=2,r=4$,则运算后数组将为 $[1,2,0,-3,-1]$。

Alex上学迟到了,所以你应该帮助他找到数组中可能的最大数字和,这可以通过进行任何数量的运算来获得,以及为此必须进行的最小运算数量。

分析
元素可以无限制乘以-1,那么所有元素最后都可以非负,也就是所有元素的绝对值和就是最大数字和。
每次乘以-1可以消除连续的负数,尽可能每次消除更多的负数;
0不会对其有影响可以直接删除,负数中间如果存在正数,那么结果需要新的负数转为正数,这样和两次消除两段负数的代价相同,所以每次只需要消除连续的负数即可。

T CodeForces 1843A Sasha and Array Coloring

Sasha找到了一个由n个整数组成的数组a,并要求您绘制元素。

你必须绘制数组的每个元素。您可以使用任意多的颜色,但每个元素都应该绘制成一种颜色,并且对于每个颜色,应该至少有一个该颜色的元素。

一种颜色的成本是 $max(S)−min(S)$ 的值,其中S是该颜色的元素序列。整个着色的成本是所有颜色的成本之和。

例如,假设你有一个数组 $a = [\color{red}{1}, \color{red}{5}, \color{blue}{6}, \color{blue}{3}, \color{red}{4}]$,并且您将其元素绘制为两种颜色,如下所示:位置1、2和5上的元素具有颜色1;位置3和4上的元素具有颜色2。然后:

  • 颜色1的成本是 $max([1,5,4])−min([1,5.4])=5−1=4$;
  • 颜色2的成本为 $max([6,3])−min([6,3])=6−3=3$
  • 着色的总成本是7。

对于给定的数组a,您必须计算着色的最大可能成本。

分析
着色成本最大化也就是将元素的差距最大化,每次将当前最大与最小元素构造为同类色即可。

U CodeForces 1842A Tenzing and Tsondu

Tsondu总是跑在第一位!

Tsondu 和 Tenzing正在打牌。Tsondu有能力值为 $a_1,a_2,...,a_n$ 的n个怪物,而 Tenzing 有能力值 $b_1,b_2,...,b_m$ 的m个怪物。Tsondu 和 Tenzing轮流做动作,Tsondu先走。在每一步中,当前玩家都会选择两个怪物:一个在他们这边,一个在另一边。然后,这些怪物会互相争斗。假设所选怪物的能力值分别为x和y,那么怪物的技能值将分别变为 x−y 和 y−x。如果任何怪物的能力值小于或等于0,怪物就会死亡。

当至少有一名玩家没有怪物存活时,游戏结束。获胜者是至少有一个怪物还活着的玩家。如果两名玩家都没有怪物存活,游戏将以平局结束。

当两名玩家都处于最佳状态时,找出游戏结果。

分析
谁的技能值和最大谁胜。

V CodeForces 1841A Game with Board

Alice 和 Bob玩游戏。他们有一块黑板;最初,上面写着n个整数,每个整数等于1。

Alice 和 Bob轮流;Alice 先走了。当他们轮流时,玩家必须在棋盘上选择几个(至少两个)相等的整数,擦除它们,然后写一个等于它们总和的新整数。

例如,如果板当前包含整数{1,1,2,2,2,3},则可以进行以下移动:

  • 选择两个等于1的整数,擦除它们并写一个整数2,则板变为 {2,2,2,2,3};
  • 选择两个等于2的整数,擦除它们并写一个整数4,则板变为 {1,1,2,3,4};
  • 选择三个等于2的整数,擦除它们并写一个整数6,则板变为 {1,1,3,6}。

如果玩家不能移动(棋盘上的所有整数都不同),该玩家将赢得游戏。

如果两名球员都发挥最佳,则确定谁获胜。

分析
当 n=2 时, [1 1 --A--> 2], B胜。
当 n=3 时, [1 1 1 --A--> 2 1], B胜。
当 n=4 时, [1 1 1 1 --A-> 2 1 1 --B-->2 2 --A--> 4], B胜。
当 n=5 时, [1 1 1 1 1 --A--> 3 1 1 --B--> 3 2], A胜。
当 n=6 时, [1 1 1 1 1 1 --A--> 4 1 1 --B--> 4 2], A胜。
当 n=k 时, [1 1 1 1 1 ... 1 --A--> k-2 1 1 --B--> k-2 2], A胜。

W CodeForces 1840A Cipher Shifer

有一个字符串a(您不知道),由小写拉丁字母组成,根据以下规则加密为字符串s:

  • 在字符串a的每个字符之后,添加与字符本身不同的任意(可能为零)个小写拉丁字母;
  • 每次添加后,我们补充的字符(原字符)也会被添加。

你得到了字符串s,你需要输出初始字符串a。换句话说,你需要解密字符串s。

请注意,以这种方式加密的每个字符串都是唯一解密的。

分析
寻找 AxxxA类型的子串,所有的A按原序先后排列就是答案。

X CodeForces 1839A The Good Array

Y CodeForces 1838A Blackboard List

在黑板上写下了两个整数。之后,以下步骤被重复执行了 $n-2$ 次:

  • 选择黑板上的任意两个整数,并将它们的差的绝对值写在黑板上。

完成这个过程后,将 $n$ 个整数的列表进行了洗牌。你现在获得了最终的列表。恢复其中一个初始的两个数字。你不需要恢复另一个数字。

保证输入可以通过上述过程生成。

分析
如果出现负数,那么一定是答案之一,因为后续添加的元素不可能为负。
如果没有负数,那么最大元素一定是答案之一,因为当 \(0≤a≤b\) 时,\(|a-b|=b-a≤b\)

Z CodeForces 1837A Grasshopper on a Line

给定两个整数 x 和 k。蚱蜢从坐标轴 OX 上的点 0 出发。在一次移动中,它可以向左或向右跳跃一些整数距离,该距离不能被 k 整除。

蚱蜢到达点 x 的最小移动次数是多少?这些移动是什么?如果存在多个答案,打印任意一个都可以。

分析
\(k|x\) 时,可以先跳x+1,最后回调一步,共需要两步。
\(k \nmid x\) 时,可以直接一步到 x.

posted @ 2023-09-05 14:14  HelloHeBin  阅读(325)  评论(0)    收藏  举报