做题记录

开学之前博客一直处于咕咕咕状态,原因有两个,第一我懒,第二我没图

Owen 颓废了一个八月,天天看番,开学前还打了几部 gal...为了防止自己颓废,开了一个博客。


10.27

sb 联考,一天 fst 一题,明明能 ak 的挂成 sb,真的 sb。

昨天 div2 也是,细节没考虑到,fst 了一题,两题没时间打了,真的 sb。

要好好反省一下了。


10.26

打了一下 div2,E,F 都不会。。。

CF1251:

E2: 贪心,将 m 从大到小排序,用堆维护。

F: 注意到集合中一个子集和子集的补集可以对应左右两个序列,然后如果两个数我们可以用两个状态表示它放左边还是右边。


09.07

记得构造 (x,y) 选哪个的时候不能 swap!九校 D1T3 就这么挂了。。。


09.06

codeforces VP:

983,1208,1205,925,1137,1214.1178.

Codeforces Round #545 (Div. 1) (1137)

A. Skyscrapers

离散化一下,取个 max 即可。

B. Camp Schedule

猜结论,取最长 border。这个东西可以 kmp, 然后就直接构造。

C. Museums Tour

暴力拆点,(x,i) 向 (y,i+1) 连边。\(5\times 10^6\) 跑 tarjan 有点卡常,而且空间也有点卡。

D. Cooperative Game

一道不错的老题,floyd 找环法。一个点速度为 1,一个点速度为 2,这时正好速度为 1 的点在环上的距离 \(x\equiv -t(\text{mod}\ c)\),然后直接走 t 步就行了。步数大概是 3t+2c。

E. Train Car Selection

一道不错的思维题。观察性质,\(b,s>0\),那么每次放多少个,开头那个始终是最小的,并且若在开头放 0,那么 0 后面的数一定没有贡献,全部删掉。若有 3 操作的话,我们维护两个标记,全局加 k,b。我们对剩下的点维护一个下凸壳,全局加的时候就暴力把结尾不符合下凸壳的数删掉。注意,因为有全局加标记,所以刚开始放结尾的数一定是 \((n,-kn-b)\),n 是未加数时的序列长度。时间 \(O(m)\)

F. Matches Are Not a Child's Play

一道不错的数据结构题。

我们先考虑整棵树的最大值和次大值,每次删除的时候肯定是删成只有次大值到最大值的路径,然后从次大值删到最大值。那么我们可以知道肯定是一条条链删过来,这样的话我们用最大值为根,LCT 上每个 splay 维护子树最大值到根的路径。那么现在我们只需要单点查这个点属于哪个最大值,那么答案肯定是最大值<当前最大值的链长+这个点到次大值的距离。

这个求前缀和是带修的,所以用树状数组维护。加上先前的 LCT,时间 \(O(n\log^2 n)\),常数很小。

posted @ 2019-09-06 16:23  Owen_codeisking  阅读(573)  评论(0编辑  收藏  举报