====== 2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17) ====== [[https://codeforces.com/gym/101620|比赛链接]] ===== A Assignment Algorithm ===== solved by qxforever ==== 题目描述 ==== ==== 解题思路 ==== ===== B Buffalo Barricades ===== upsolved by Potassium ==== 题目描述 ==== 平面上有一些牛,依次在某些点加入一些栅栏,问此次加入的栅栏和之前加入的且在左下角的栅栏组成的密闭空间中有多少头牛。保证没有栅栏同$x$或同$y$。 ==== 解题思路 ==== 不妨只考虑添加完所有栅栏后,某一个$y$下的牛、栅栏分布情况。容易想到这是一个牛和栅栏交替的结构,而栅栏可以跨$y$继续向下延伸,故考虑用$set$存一下栅栏的情况(加入时间、$x$位置),然后按$y$从大到小进行枚举处理。 将所有牛和栅栏的坐标信息排序,按$y$从大到小、$x$从大到小、从栅栏到牛的顺序枚举并添加/删除信息,这就能求出最终每个栅栏圈住了几头牛。 在上面的过程中,求出来**每个时间$i$放下的栅栏**圈住了外面**哪个时间更早放下的的栅栏$outer[i]$**的牛,用并查集倒序处理即可获得答案。 ===== C Cumulative Code ===== unsolved ==== 题目描述 ==== ==== 解题思路 ==== ===== D Donut Drone ===== upsolved by Potassium ==== 题目描述 ==== 有一个围成一个甜甜圈的$r\times c$矩阵$a$(上下可达、左右可达),初始位置在$(1,1)$,有$q$次、两种操作:走$k\leq 10^9$步并询问位置;将$a_{xy}$赋为$z$。 $r,c\leq 2000,q\leq 5000$。 ==== 解题思路 ==== 观察到$q$比较小,可以考虑记录循环节,但由于循环节是$O(rc)$级别的,考虑降级,即记录$(x,1)$走$c$步后位于$(nxt[x],1)$。询问比较容易,问题在于修改。 分别考虑$(x-1,y-1),(x-1,y),(x-1,y+1)$三个点,只有到达这三个节点的区间才有可能被更新。维护一下对应的初始区间,很容易考虑到每次$y$坐标$-1$的时候,区间只会修改端点附近的$\pm 1$,故通过这个特性更新即可。 ===== E Embedding Enumeration ===== unsolved ==== 题目描述 ==== ==== 解题思路 ==== ===== F Faulty Factorial ===== solved by Potassium ==== 题目描述 ==== 给定$n,p,r(n\leq 10^{18},p\leq 10^7)$,求一个序列$a$满足$a_i=i,i\neq t;a_ip$的时候把$n$变为$p$即可;$n=p$的时候把$2$变为$1$即可,这里特判一下$p=2$的情况;否则显然无解。 若$r\neq 0$,即不可以整除$p$:当$n\geq 2p$的时候,阶乘必然至少有两个$p$的因数,只能改变其中一个,$r=0$必然成立;$p\leq n<2p$的时候,则考虑修改$a_p$的值;$n