ACL Contest 1
A
先按$x$排个序。则
- ,如果$p_i>p_j,i>j$,则连边。
维护一个单调递减的单调栈,显然插入一个新元素,就会跟$<$自己的组成联通快,显然最后保留最小的那个元素,这样之后就有更多可能去合并其他元素。
A
1 |
|
B
$n(n+1)\mod 2k=0$
将$2k\rightarrow ab=2k$因数分离。
设$n+1=ax,n=by,ax-by=1$,$exgcd$即可。
B
1 |
|
C
设某个点$(x,y)$,终点为$(i,j)$,$ans=i+j-x-y$
最大化$\sum (i+j)$,限定可行点,流量为$1$,费用为$(i+j)$。以及连各种边,也可以预处理连边
跑最大费用流即可。
C
1 |
|
D
先用双指针,处理出每个位置,可以跳到的位置$tmp$。
考虑$[l,r]$,如果找最长的长度,显然暴力跳不行,就倍增一下。
找到之后,可以发现$[last,r]$都可以放,那么这个时候倒过来跳的时候,$ans=\sum (r_i-l_i+1)$,画个图就可以$ok$。正反维护两个倍增的数组即可$\sum (r_i),\sum (l_i+1)$
D
1 |
|