Codeforces Round #582 (Div. 3) 解题记录

Posted xxrlz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #582 (Div. 3) 解题记录相关的知识,希望对你有一定的参考价值。

D

  • 题意: 给出一个序列\(a\),每个操作可以将\(a_i := \lfloor\fraca_i2\rfloor\),问最少几次操作获得\(k\)个相同的\(a_i\)
  • 思路: 将每个\(a_i\)都降为0,并在变化过程中加入到vector(相同大小,变化次数不同)中,这样每个数就会产生\(log(n)\)个数,操作完后枚举每个vector,sort后求其前k项和(若不到k项则不计算),最小的即为答案

E

  • 题意: 给两个长度为2的字符串s1,s2(只包含‘a‘,‘b‘,‘c‘),让你构造长度为\(3n\)的字符串,‘a‘,‘b‘,‘c‘均出现n次且子串里不能有s1,s2
  • 思路: 答案串必定是"abc"的一个排列重复n次或,按这个排列的顺序让‘a‘,‘b‘,‘c‘重复n次,枚举出所有的答案串再判断即可.

F

  • 题意: 给出两个序列\(p,q\),让你构造出一个长度为n的字符串s,使得\(s[p_i] \le s[p_i + 1]\),\(s[q_i] \le s[q_i + 1]\),且最少出现k个不同的小写字母.
  • 思路: 我们把\(\le\)看做是前驱关系,构造出有向图,跑tarjan,一个强联通分量必须为一个字母

G

  • 题意: 给出一个带权树和一系列询问,问有多少对点,使得简单路径上的最大权值不超过w.
  • 思路: 用并查集维护每个点经过边不大于\(w\)所能到达的集合,从小到大排序边和询问,对每个询问,我们对小于该询问的边进行操作,如果边的两端\(u,v\)不在一个集合,对其进行合并,对答案的贡献为\(\binomsize[u]+size[v]2-\binomsize[u]2-\binomsize[v]2\)(集合内的点,两两相互可达)

以上是关于Codeforces Round #582 (Div. 3) 解题记录的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #582 (Div. 3)

Codeforces Round #582 (Div. 3) 解题记录

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

Codeforces 582AGCD Table

Codeforces Round #726 (Div. 2) B. Bad Boy(贪心)