There,Hello
There,Hello
ACMer
个人博客

Codeforces Round 872 (Div. 2)【题解】

There,Hello - 2023-5-9 / 题解
发布于:2023-5-9|最后更新: 2023-11-17|
type
status
date
slug
summary
tags
category
icon
password

A. LuoTianyi and the Palindrome String

给你一个回文串,求非回文串的子串最大长度,不存在输出“-1”
如果这个串全部相等,那么无论怎么选都是回文串
否则,把第一个字符删去就一定不是回文串

B. LuoTianyi and the Table

给你 个数,任意顺序填入到 的数组中,求 的最大值
贪心,尽量让括号里的式子大,两种情况:
  1. 位置放最小的, 放最大的和次大的,剩下的随便放
  1. 位置放最大的, 放最小的和次小的,剩下的随便放
两种情况取 即可

C. LuoTianyi and the Show

个人, 个座位,每个人以三种方式之一入座:
  1. 坐在最左边的人的左边,如果最左边的人位置在 ,那就离开。如果没有人坐着,那就坐在 位置
  1. 坐在最右边的人的右边,如果最右边的人位置在 ,那就离开。如果没有人坐着,那就坐在 位置
  1. 坐在 位置上,如果被占用那就离开
问最多入座多少人?
考虑第三种入座方式,让他们全部入座不会使答案变差
考虑第一个入座的人,以第一种方式入座的位置不会超过第一个入座的人,第二种方式入座的位置不会小于第一个入座的人
枚举第一个入座的人,让第一种方式入座的从右往左填,如果当前位置存在第三种方式入座的,那就跳过这个位置,让第二种方式入座的从左往右填,如果当前位置存在第三种方式入座的,那就跳过这个位置

D. LuoTianyi and the Floating Islands

一棵 个节点的树,随机在树上设置 个不同的特殊点,定义一个节点是好的当且仅当从它到 个特殊点的距离总和是所有 个节点中的最小值。求期望的好节点的个数是多少?

Easy Version

,考虑一个节点是好点时,被统计的次数
  • 时,枚举每一个节点作为根,如果该节点是 个特殊点其中之一,另一个点随便哪个都会使得当前节点是好节点,若不是,则只要让它们在不同的子树内就能使得该节点是好节点
  • 时,枚举每一个节点作为根,如果该节点是 3 个特殊点其中之一,另两个点只要让它们在不同的子树内就能使得该节点是好节点,若不是,则只要让它们在不同的子树内就能使得该节点是好节点
实际上 时,两份特殊点的路径上都是好点, 时,好点的个数只有一个
QQ聊天记录迁移codeforces 翻译脚本