【提高】Codeforces Round#714(Div 2) 1513A~G

Codeforces Round#714(Div 2) 1513A~G

Wogua_boy

提交网址:https://codeforces.com/contest/1513

A.Array and Peaks

定义一个位置i是峰值当且仅当(a_i>a_{i-1},a_i>a_{i+1})

现在给出n和k,请你构造出恰好有k个峰值的长度为n的排列,或者确定无解。

B.AND Sequences

定义一个序列a是好的,当且仅当对于每个位置i有:

(a_1&a_2&...&a_i = a_{i+1}&a_{i+2}&...&a_n)

现在给出长度为n的数组a,询问有多少种排列p,使得

(a_{p_1},a_{p_2},...a_{p_n})是好的。

C.Add One

一个数字,每一次操作,它的每一个数位会加1。

比如它是109,一次操作后变成2110,两次操作后变成3221。

现在给出n和m,询问数组n经过m次操作后,有几位数字。

D.GCD And MST

给出一个长度为n的序列a。

现在尝试构造这样的一个无向图:

一开始,每个i和i+1之间有一条长度为p的边。

(gcd(a_i,a_{i+1},a_{i+2},..,a_j)=min(a_i,a_{i+1},a_{i+2},..,a_j))的时候,在点i和j之间连一条长度为(min(a_i,a_{i+1},a_{i+2},..,a_j))的无向边。

询问这个图的最小生成树的总边权。

E.Cost Equililibrium

给出一个序列。

定义平衡序列为一个序列所有元素都相同。

单次操作你可以选择两个点i和j,使得(a_i-=x)(a_j+=x),花费(x|j-i|)

一个序列是好的,当且仅当它通过多次操作变成平衡序列的最小花费和最大花费一样。

现在给出一个序列a,询问有多少种排列p,使得(a_{p_1},a_{p_2},...a_{p_n})是好的。

F.Swapping Problem

给出两个数组,你可以选择交换两个位置,或者不交换,使得(sum_{i=1}^n|a_i-b_i|)最小。

输出最小值。

原文地址:https://www.cnblogs.com/zhanglichen/p/14649760.html