- 2025-01-07题解:CF2043C Sums on Segments
题意给你一个长度为\(n\)的数组\(a\),满足\(a\)中有且仅有一个不为\(1\)也不为\(-1\)的数(以下简称特殊的值),剩余的数都是\(1\)或\(-1\)。求所有可能的子区间的和的值(下文简称答案)。从小到大一次输出每一个值,每个值只输出一遍。题解首先,我们发现,如果把那个特殊的值考
- 2024-12-29[CF2043C] Sums on Segments 题解
我们先想全是\(\pm1\)的。令区间内最小子段和为\(mn\),最大子段和为\(mx\),注意到\([mn,mx]\)内的数全都能被凑出来。证明:我们在区间\([l,r]\)内任意取一个子区间\([l',r']\)。定义【扩展】为将一个区间左边或右边添加一个数。定义【收缩】为将一个区间左边或右边去
- 2024-12-27CF2043C Sums on Segments
注意到,要求一个值域是\(\{1,-1\}\)的序列的子段和有多少种不同的取值,实际上就是求它的最小子段和\(a\)到最大子段和\(b\)之间有多少个整数。因为可以证明,每个处于\([a,b]\bigcapZ\)中的数,都至少有一个子段与之对应——要得到和为\(b-1\)的子段,只需要从最大子段的一端删
- 2024-12-25CF2043C 题解
CF2043C题解题意给定一个除了\(-1,1\)之外,最多存在一个\(x,x\in[-10^9,10^9]\)的数的序列,求其子段和的所有可能值,从小到大输出。分析很容易就去思考如何从这个特殊的\(x\)入手。于是先排除这个特例,考虑全都是\(1,-1\)的情形,那么顺序从左到右不断加入\(a_i\),可以发现