赛后惊觉对面学校的大佬正巧比我高4pts
A. Sushi for Two
题目大意
给定一个只有1,2的数组。求最长的长度为$ans$的子段满足前后$ansover 2$部分各为不同的数字
题目分析
把相同数字的子段缩成一个点,再以相邻两两最小值取答案最大值。
[枚举]B. Circus
题目大意
每一个位置有两个权值$t_i,a_i$。要求将n个数分为两部分${A},{B}$满足$sumlimits_{xin A}t_x=sumlimits_{yin B}a_y$,输出任意方案数。
题目分析
记00有$A$个,选$M$个;01有$B$个,选$N$个;10有$C$个,选$P$个;11有$D$个,选$Q$个。则有
$egin{equation}
left{
egin{array}{lr}
C+D=sum t_i\
B+D=sum a_i \
M+N+P+Q={nover 2}\
P+Q=(B+D)-(N+Q)\end{array}
ight.
end{equation}$
那么我们就首先枚举$M$再枚举$N$,时间复杂度$O(n^2)$
听说有机房$O(n)$贪心于是全线红灿灿地FST?
[离散化]C. Skyscrapers
题目大意
对于nxm的矩阵,现要求出每一个元素满足的最小x使得:用$[1,x]$的数对该元素所处十字上的所有元素重新标号,并保持它们的相对大小不变。$n,m≤1000$
题目分析
对于行列分开预处理离散化,记$idx,idy$为每一点在横纵两个方向上的排名。那么接下去就是稍微注意一下细节就行了:
[kmp 贪心 构造]D. Camp Schedule
题目大意
给定字符串$S$和$T$,要求把$S$重新排列为$S'$使得$T$在$S'$中出现次数最多。要求输出最终的任意合法$S'$。$|S|,|T|≤500000$
题目分析
有显然的贪心:先求出$S$的最短不完全循环节,再按照这个循环节构造下去。关于这个“最短不完全循环节”详见bzoj1355.
需要注意的是,这里的构造并不是以一整个循环节为单位的,也就是说正确的构造是应到只剩下0或1为止。如果单纯地puts一个个循环节,再将剩下的01随意输出,似乎是会FST的。