o

Codeforces Round 479 (Div. 3)

A. Wrong Subtraction

给出一个整数\(n\)和操作次数\(k\) ,每次操作若末尾非\(0\)可以减\(1\),否则去掉个位,求\(k\)次操作后的数字
模拟即可

B. Two-gram

给出一个字符串,找出出现频次最多的长度为2的子串
模拟即可

C. Less or Equal

\(n\)个数字和一个\(k\),请找出一个\(x\)使得序列中大于等于\(x\)的数刚好有k个
二分答案x,统计个数,根据个数更新区间即可

D. Divide by three, multiply by two

给出\(n\)个数,重新排列这n个数使得对于任意的 \(1<=i<n\)\(a_i*2==a_{i+1}\)\(a_i/3==a_{i+1}\)
除3相当于去掉一个因子3,乘2相当于添加一个因子2,所以最前面的数应该是包含3最多且2最少的,排序后依次尝试乘2和除3即可。

E. Cyclic Components

给一个无向图,求其中可以首位相连构成环(且没有多余边)的连通分量个数
首位相连成环的条件可以转化为同一连通分量内任意点度为2,统计之即可。

F. Consecutive Subsequence

给出n个数,删除若干数后使得剩余的数不改顺序构成连续递增子序列(形如x,x+1,x+2...),求最大长度和一种方案
记录每个数x右侧第一个x+1的位置p[x+1]和以x为起点的最大长度len[x],从右向左用map维护p、len及最大值下标,从最大值处顺着p找到每个数。

posted @ 2023-12-26 23:11  sephi  阅读(5)  评论(0)    收藏  举报