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

猜你喜欢

转载自www.cnblogs.com/antiquality/p/10501112.html