Codeforces Round #545 (Div. 2)

赛后惊觉对面学校的大佬正巧比我高4pts

A. Sushi for Two

题目大意

给定一个只有1,2的数组。求最长的长度为$ans$的子段满足前后$ans\over 2$部分各为不同的数字

题目分析

把相同数字的子段缩成一个点,再以相邻两两最小值取答案最大值。

 

[枚举]B. Circus

题目大意

每一个位置有两个权值$t_i,a_i$。要求将n个数分为两部分$\{A\},\{B\}$满足$\sum\limits_{x\in A}t_x=\sum\limits_{y\in B}a_y$,输出任意方案数。

题目分析

记00有$A$个,选$M$个;01有$B$个,选$N$个;10有$C$个,选$P$个;11有$D$个,选$Q$个。则有

$\begin{equation}
\left\{
\begin{array}{lr}
C+D=\sum t_i\\
B+D=\sum a_i \\
M+N+P+Q={n\over 2}\\
P+Q=(B+D)-(N+Q)\\\end{array}
\right.
\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的。

 

 

[tarjan dp]E. Museums Tour

题目大意

还在读题ing
 
 

后记

话说这把没有挂题真是体验良好、值得庆贺。或许是这次时间比较特殊吧,于我而言稍些有利( 毕竟好几把夜间cf都是几近梦游);于整体而言压力也小(外校各路神仙似乎因为5:05这个尴尬的时间点而参赛不多 / 也可能因为全国OIer还还还在打div2的已经不多了……)所以最终成绩还是可以的。
无论怎样,该高兴的还是得高兴;该清醒的还是得清醒吧。
不多说了,明天一早还要考试呢。
posted @ 2019-03-09 15:41  AntiQuality  阅读(128)  评论(0编辑  收藏  举报