ISIJ2020 不知道算不算游记

由于 CSP 的暴力分太高,我来了这里。
转发自 PKUWC 2020 游记

Day -53

要是不是别人说我进了,我还真没注意到。

居然混进了代表队 1,当然现在的水平远远没有代表队 1 的水平了。

为啥 zjr 没报名啊,队爷是他才对啊(

Day -45(模拟赛 1)

开场先把 T1,T2 码了。

然后低智商选手的事实就暴露出来了。

全世界都会 T3,自闭了。(我也不知道我会不会,但最后也没调出来)

upd:为什么有人用三分过了 T3,我就得挂,是不是我太菜了 /kk(弄得我以为三分是假的

后来我想的是个枚举中位数,然后做个两个分段一次函数的和,然后求最值,然而细节巨多,就暴毙了……

upd2:我把一个 [-2e9,2e9] 的数减了一个 [-2e9,2e9] 的数,成功爆 int 了。这么恶心的吗……

upd3:T4 的计分修了,勉强卡上了 300 分,然而还是丢脸 /dk

upd4:26 个人打了,我 rk10,308 分,果然是远远不到一队水平了。

这里放个简要题解(没有题意,别想了)

T1:简单贪心,三个数都尽可能靠近 (frac{n}{3}) 即可。

T2:简单数位 dp,(f_{i,j,0/1}) 表示填了前 (i) 位,上一个填了 (j),目前这个数是否顶到上界。

T3:

比较长,折起来了

(a) 的前两个数为 (x,y),那么是 (x,y,y-x,-x,-y,x-y) 的六个一循环。把模 6 为 0,4,5 的 (i)(b_i) 取反,就可以看成是 (x,y,y-x) 这样循环。
贡献大概可以写成 (sum |a_i-x|+sum |b_i-y|+sum |c_i-(y-x)|=sum |a_i-x|+sum |b_i-y|+sum |(c_i+x)-y|).
假如我们枚举了 (x),那么 (y) 的最优值是个小学数学。对这些数排序可以做到预处理 (O(nlog n)),单次只需要归并的 (O(n))
发现这个关于 (x) 是凸的,三分即可。
顺便证一下凸性:
首先,当 (x) 增大时,大于 (x)(a_i) 的个数变多,所以这一块关于 (x) 斜率递增。
第二部分可以看成所有 (c) 向右不断平移,所以 (b_i)(c_i+x) 的中位数会不断变大,同时大于中位数的 (c_i+x) 的个数会变多。这一块的斜率关于 (x) 也递增。
所以整个关于 (x) 的斜率递增。

T4:

比较长,折起来了

首先有个显然的 (O(na^2)) 的 dp 做法。
(f_i) 表示目前的体积是 (i),只考虑体积填到 (i) 之后的操作的花费的话的最大价值。从大到小枚举 (i),转移枚举用哪个实验。

[f_i=max_{j=1}^nmin_{k=i+l_j}^{i+r_j}(f_k-c_j) ]

(n) 个单调队列可以做到时空复杂度 (O(na)),恭喜点名被卡。(听说用 deque 就能艹过去???)
我们时时刻刻维护一个 (mn_r),表示 ([i,r])(r) 的最大值。这时转移到 (f_{i-l_j}),应该从 (mn_{i-l_j+r_j}) 转移到。
那么怎么维护 (mn) 呢?维护一个从栈顶到栈底单调递减的单调栈。每次压入一个数,如果比栈顶小,用并查集把栈顶的父亲设成自己。
时间复杂度 (O(namathrm{DSU}(a))),空间复杂度 (O(a)),实际表现十分优秀。

Day -38(Code+ 7)

全体 ISIJ 选手都要来打,我也不知道为什么(

对自己太有自信了,报了难的那组。

然后不知道跟什么一样,爆零了。

太丢脸了,不想写了。

Day -31(模拟赛 2)

开场还是码了 T1。T2 一眼不会,T3 一看是个板子?

去写 T3,然后挂了。撑死 90 上不去了,剩下两个点 MLE。

滚回去 T2。好像可以用个套路……

码完接着搞 T3,把各种东西换成 short,然而分数完全没变。自闭了。

最后半小时会了 T4(还不知道真不真),最后没调出来。

rk11,比上次还丢脸。

upd:好了,我的 T4 是假的 /cy

那最后没调出来也没那么难受了

个鬼啊,说不定能多骗点分

简要题解:

T1:(nxt_i) 表示 (i) 后面第一个比 (i) 高的位置。离线,按询问高度排序,每次把比这个高度小的建筑加进去,加的时候进行 ([i,nxt_i-1]) 区间加一,然后全局最大值。

T2:要用到一个套路性质:非负权边树上,(v) 为离点 (u) 最远的点。那么 (v) 一定是某条直径的某个端点。那么倒过来,维护每个联通块的直径,合并就六种情况。

T3:真的完全是线段树分治裸题。但是怎么挂的我也不知道……

T4:二分一波。从左往右扫描线,对于一条竖线上的每个点,以它为右上角的矩形中有点,等价于它后面一段长 (h-1) 区间中,最大的纵坐标与当前扫到的纵坐标差不超过 (w-1)。那么加入一个点就区间取 min,判断就全局 min。(看起来很 trivial,然而我为什么会没想到……)

Day ???

不是很想更,咕着。

以后无聊了再来更。

Day 10

似乎又垫底了,开心。

搞 whk 去了。

原文地址:https://www.cnblogs.com/1000Suns/p/12900589.html