- 2023-07-132023.7.13拷逝
T1原题链接看到最大值最小,考虑二分答案。接下来考虑如何构造\(b\)数组。因为\(b\)数组单调不减,所以当前的\(b\)越小,对后面的影响越小。所以构造时尽量小地构造\(b\),如果无法构造,说明当前的二分值不合法;如果构造成功,说明合法。\(code:\)#include<iostream>#include<cs
- 2023-07-062023.7.6拷逝
T1原题链接对于区间\([l,r]\),答案是\(max(cntr,cntl)-x\)(其中\(cntl,cntr\)分别表示区间内左括号和右括号的数量,\(x\)表示匹配的括号数量)。首先考虑\(max(cntr,cntl)\)。该柿子可以转化成\((cntl+cntr+|cntr-cntl|)/2\)。前面的\(cntl+cntr\)非常好算,就是\(\sum
- 2023-06-182023.6.18拷逝
T1如图,从\(x_1\)能且只能走到\(x_1+2,x_1+4,x_1+6...\)设\(f[x]\)表示从\(x_1\)走到\(x\)的方案数,那么如果\(x-x_1\)是偶数,那么\(f[x]=f[x-2]+f[x-4]+...+f[x_1]\),否则\(f[x]=0\)。初始值:\(f[x_1]=1\)。考虑\(f[x]\)的前几项。\(f[x_1]=1,f[x_1+2]=1,f[x_
- 2023-06-042023.5.7拷逝
T1假设交换了\(a[i]\)和\(a[i+1]\),那么\(a[1...i-1]\),\(a[i+2...n]\)与这两个数构成的逆序对不变。只有\(a[i]\)和\(a[i+1]\)两个数构成的逆序对可能发生改变。如果\(a[i]<a[i+1]\),那么逆序对个数加\(+1\);如果\(a[i]=a[i+1]\),那么逆序对个数不变;如果\(a[i]>a[i
- 2023-06-042023.6.4拷逝
#T1首先题目没有强制让我们一起算$k^{r(p)}+r^2(p)$,我们可以把它拆成两部分,一部分是$k^{r(p)}$,一部分是$r^2(p)$。考虑递推求解两个部分。先看第一个部分。设$n$的全排列的逆序对个数分别是$p_1,p_2,...,p_{n!}$,并假设我们已经知道$k^{r(p)}$的值。现在新增一个数$n
- 2023-04-142023.4.12拷逝
#T1seq首先这道题要注意对题意的理解,子序列的意思是子集,而不是子区间。我们可以将序列从小到大排序。排序后,如果一个子序列只有$a[i]$,$a[j]$$(i<j)$和任意多个在$a[i]$和$a[j]$之间的数,那么这个子序列的权值就是$a[i]\timesa[j]$。这样的序列有$2^{j-i-1}$个。由此