tg 53
直接爆零
讲题
T1
排列:
开桶记录每个数位置
交换差值为\(1\)的逆序对即可构造合法方案
证明就是每次只减少\(1\)对逆序对
序列:不会
T2
写的官方题解
为表示方便,记\(e=\lfloor\log_2 n\rfloor\)
通过倍增法造出\(y=2^{e}\cdot n\)
记\(z=y\space \mathrm{xor} \space x\)
发现\(gcd(z,n)=1\)
反手构造\(a\cdot n-b\cdot z=1\)
然后找到最小的正整数解\(a,b,2|b\)
最后\(a\cdot n\space \mathrm{xor}\space b\cdot z=1\)
T3
分治,扫描线
(常数比较大写的时候注意效率)
写的分治
当递归到\([l,r]\)时,记\(mid=\frac{l+r}{2}\)
由于最大值和最小值均在\([l,mid]\)或\([mid+1,r]\)的区间最后都会递归到,
只考虑最大值和最小值分别落在两个区间的贡献
从大到小枚举每一个\(i\in[l,mid],\exist p_1,p_2\in[mid+1,r]\)满足:
(记枚举区间的右端点为\(r'\))
\(1.r'\in[mid+1,p_1]\)最大值和最小值均在\([i,mid]\)
\(1.r'\in[p_1,p_2]\)最大值或最小值有一个在\([i,mid]\)
\(1.r'\in[p_2,r]\)最大值和最小值均在\([mid+1,r']\)
随着\(i\)减小,\(p_1\& p_2\)单调递增,双指针维护即可
顺手维护一个popcount的桶即可
T4
不会

浙公网安备 33010602011771号