Codeforces Round #715 (Div. 2)

Codeforces Round #715 (Div. 2)

前言:第一次打Codeforces ,提交的时候甚至不知道c++用什么编译器。。
好久没写博客了,最近会把cf的比赛,某些难懂的算法和nb的题记录一下。
成绩:rating :0 -> 440
通过:A、B
看了C题,想了半天搞不出来,已12点,困,遂睡觉。

A . Average Height

sb题 , 题目给出一个数组 , 要求进行顺序调换之后使得 “ 相邻两个数的平均数为整数 ” 这样的对数最多。那么就是所有奇数放前面,偶数放后面,或者反过来。

B . TMT Document

sb结论题,题目给出一个只有t和m的字符串,判断是否能把原串分为若干个“tmt”子串。例如:ttmmtt 分别取第1,3,5和2、4、6就可以分成两个tmt。
对于一个串可以有很多种分割模式,我们只要注意两点:
1.对于一个串,t必须是m的两倍
2.对于t,m的匹配,每个m左右都必须有至少一个t。也就是假设某个位置及其左边有i个m,那么他左边至少要有i个t,否则不能达到题目要求,右边同理。

C . The Sports Festival

sb动规题,看了题解才明白,题目给出一个数组a1,a2…an,设di = max(a1~ai)- min(a1~ai) 。设ans 为d1+d2+…+dn,你可以调换数组a的顺序,求min(ans)。
比赛的时候我只相出了di>=d(i-1)这条没什么用的性质,实际上观察数组a最后一个位置,我们一定放在这里的是a1或者an,否则an-a1作为最大的d会提前出现,影响ans。
那么也就是说1n的最小值一定会由1n-1与2~n推导出来,他们又可以通过更小的区间以同样的方式推导出来。设答案为dp(1,n),dp(l,r) = ar - al + min(dp(l+1,r),dp(l,r-1))…

其实C题的状态转移不难想,但是没能观察到数组最后一位的情况,思维题还是我的弱项,太菜啦,要努力啦,为了愿望!

Guess you like

Origin blog.csdn.net/m0_45699242/article/details/115836772