Dashboard
玩构造玩的,服了。
A
拥有最大牌的必胜。link
B
若相邻的差 \(\ge 2\) 则有解,否则根据变化连续性一定无解。link
C
加两个数,第一个数为之前所有数的异或和。加进来之后异或为 0。第二个数为加完第一个数之后的和。link
D
考虑 \(k=n-1\) 时,分别询问除去每个数之后的第 \(m\) 大。若除去的数原排名 \(\le m\) 则回答的是原排名 \(m+1\) 的数,否则是第 \(m\) 的数。所以答案就是回答的值更大的回答个数。
对于原问题,只需对前 \(k+1\) 个数做上述过程。link
E
按所有点 \(x,y\) 两维坐标奇偶性分为四组。考虑两两组别之间点距离的平方除以 \(4\) 的余数,差为 \((0,0)\) 则余 \(0\),\((0,1),(1,0)\) 余 \(1\),\((1,1)\) 余 \(2\)。则同一种距离的所有边连接的组别有三种情况:1. 四个点分别连自环;2. 连正方形四条边;3. 连两条对角线。当两条对角线的组别都非空时直接一条对角线为一组。否则若一条对角线的两个组别都非空则两个组别分别为一组。再否则只剩一组,则横纵坐标除以 \(2\) 递归求解。link
F
倍数相关,考虑根分。记 \(s_i\) 为前缀和,条件可以表示为 \(r-l=k(s_r-s_l)\)。
当 \(k\le \sqrt n\),枚举 \(k\) 之后按照 \(ks_r-r=ks_l-l\) 的条件计数。
当 \(k>\sqrt n\) 时 \((s_r-s_l)<\sqrt n\),枚举 \(s_r-s_l\),然后对一个右端点就有一段符合要求的左端点,算一下有多少左端点满足区间长度是 \(s_r-s_l\) 的 \(>\sqrt n\) 倍可以了。
link
G
一个想法是在无限数轴上对每个 \(a_i\) 每个点 \(x\) 都连边 \(x\rightarrow x+a_i\),然后一种 \(a_i\) 只能走一次,如果有环就找到答案了。
然后想办法注意到 \(i-a_i\in [1,n]\)。所以只需要拉出来 \(1\sim n\),然后 \(i\) 连向 \(i-a_i\),构成基环内向树。把环找出来就行了。link
H
这就很好玩了。
想办法注意到联通块一定是连续区间。证明很简单,对于顺序对 \(i,j\),\(\forall i<k<j\),\(k\) 要么能和 \(i\) 连边要么能和 \(j\) 连边。
那么拆贡献到每个 \(i,i+1\) 是否联通。若要它们不联通,就必须没有任何一条 \([1,i]\rightarrow [i+1,n]\) 的边,也就是 \(\min[1,i]>\max[i+1,n]\)。形象化下来的答案就是从左上到右下的块数。
怎么维护这个块数:把每一块的贡献算在最大值头上。不妨添加一个 \(a_0=+\infty,a_{n+1}=-\infty\)。设最大值为 \(w\),将 \(\le w\) 的点看作 \(0\),\(>w\) 的看作 \(1\),如果 \(w\) 要成为一个块的代表元,就需要整个序列形如 \(\cdots 111000\cdots\)。
对每个权值维护其 \(01\) 序列的相邻两个位置 \(01\) 不同的位置数目 \(cnt_w\)。因为两边有无穷大和无穷小,所以 \(cnt_w\ge 1\),而符合要求的 \(cnt_w=1\),为最小值,那答案就是最小值个数。
对于一对 \(a_i,a_{i+1}\),贡献是让 \([\min(a_i,a_{i+1}),\max(a_i,a_{i+1})-1]\) 区间的 \(cnt_w\) 加 \(1\)。
用线段树维护即可。link