「こんなきれいな星も、やっぱりここまで来てから、見れたのだと思うから。だから・・もっと遠くへ・・」

THUSC Day -1 训练日记

Codeforces 200A

有很多种思路……
我第一想法是先把候选坐标序列求出来,然后找到第一个未被占领的坐标,这样可以转化成LCP,用树状数组+二分做。
但因为边界原因这个方法必须把地图大小扩展到10000*10000,直接就挂了
然后考虑坐标旋转(x,y)=>(x+y,x-y),这样首先我们可以发现,可以先二分出最小的绝对值和。这个坐标转化后是矩形用个二维树状数组维 护一下就好了。二分出这个答案S后,可以发现,距离(x,y)曼哈顿距离小于等于S的点坐标转化后图形肯定是一个矩形框,中间没有点(否则就有小于S的解 了),然后考虑坐标转化后的矩形的4个象限,每个象限内又是具有二分性质的(画个图就知道了),因此可以枚举每个象限,再二分一次求出最终答案。这样虽然 理论可行,但代码会很恶心,复杂度也不太靠谱O(Klg^3N)的…… (刚才翻了AC的人的代码,发现真有人这么做的orz……)
最后想到了暴力……… 暴力可以维护每一行可用的块,然后直接搞,可以O(NK),这样K=10^5,N=2000,感觉压力大,但实际可以过……
于是就瞎狗眼了


国家集训队互测题 陈丽洁 middle

给定一个序列,求左端点在[a,b],右端点在[c,d]的子序列的最大中位数。
大概是二分答案,然后变成+1,-1序列,转化为前后缀最大和。
然后这个转化序列不太好搞,于是我们发现可以用函数式数据结构把所有的n棵线段树都建起来就行了。
二分的细节很多