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找到每个数。

浙公网安备 33010602011771号