5.3 SYSU校内训练

头一天晚上熬了夜,一觉睡到下午。
比赛开了2h后才到,然后顺理成章的被吊打

终榜

A

\(n\)个怪排成一排

两种操作

1:\(l,r,w\) 表示学会了一个花费为\(w\)的技能,效果为清掉\([l,r]\)中的所有怪
2:\(k a_1 a_2.....a_k\) 询问杀死这些怪的最小花费是多少

保证\(w=1\)

随便贪心一下就可以了
每加入一个怪,考虑选择一个覆盖这个点的且右端点尽可能靠右的线段即可。
线段树维护即可。

B

求最短非回文串长度
显然只要有不止一种不同字母答案即为\(2\)

C

并查集或各种数据结构维护一下连续段即可

D

考虑枚举\(s_i=s_j=k\)的在两个序列上对应的位置
显然会分别是一段区间
因此这个两个区间组合在一起就会产生一个贡献
这个贡献显然可以用二阶差分来维护

E

签到题

F

签到题

G

好像还不是很会,明天问一下xyy

H

给你一个\(+1\)\(-1\)组成的序列
每次操作可以合并两个相邻的位置,替换为它们的乘积且获得一个相同大小的收益
将序列合并成一个数字,最大化收益和。

考虑一个显然的性质
合并两个连续的\(1\)一定不亏
那因此序列可以转换为一些连续的\(-1\)的段被单个的\(1\)分割开

中间那些\(-1\)则可以两两配对来构成\(1\)
此时需要考虑的一个点就是
\(-1\)的连续段长度为偶数时,可以直接全部变成\(1\),没有什么问题
但为奇数时,一定会剩下一个\(-1\)我们需要考虑一下把最后那个\(-1\)放在什么位置。

\(-1 -1 -1 1\)

\(1 -1 -1 -1\)
手玩这两个例子可以发现
中间的\(-1\)段是无所谓的
只有两头上的\(-1\)段应该把\(-1\)留在外侧,\(1\)留在内侧。

经过这样一番转化后,序列就变成\(+1\)\(-1\)的交替序列了

直接计算即可。

I

签到题

J

签到题

posted @ 2021-05-05 06:50  Creed-qwq  阅读(64)  评论(0编辑  收藏  举报