摘要: 容易发现要求三个区间各数出现次数的最小值。考虑bitset,不去重离散化后and一发就可以了。于是莫队求出每个区间的bitset。注意空间开不下,做多次即可。输出的东西错了都能调一年服了我了。 阅读全文
posted @ 2018-12-01 23:24 Gloid 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 对每个人行道求出移动距离在哪些区间内时其在建筑物前面。现在问题即为选一个点使得其被最多的区间包含。差分即可。对建筑暴力去掉重叠部分。开始时没有去重用了nm次vector的push_back,时间大概是去重写法的300倍,不知所措。 阅读全文
posted @ 2018-12-01 20:38 Gloid 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 第一问是来搞笑的。由欧拉函数的计算公式容易发现φ(i2)=iφ(i)。那么可以发现φ(n2)*id(n)(此处为卷积)=Σd*φ(d)*(n/d)=nΣφ(d)=n2 。这样就有了杜教筛所要求的容易算前缀和的两个函数。一通套路即可。 阅读全文
posted @ 2018-12-01 18:35 Gloid 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 容易想到建一棵平衡树,修改时打上标记即可。但是修改会导致平衡树结构被破坏。注意到实际上只有[k+1,2k)这一部分数在平衡树中的位置会被改变,所以对这一部分暴力修改,因为每次都会使其至少减小一半,复杂度非常正确。 开始写的玩意一个点要跑10s吓到我了,卡了半天常(最后也只是在darkbzoj上过了) 阅读全文
posted @ 2018-12-01 17:18 Gloid 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 一个显然的dp是设f[i][j]为i子树内权值<=j时的答案,则f[i][j]=Σf[son][j],f[i][a[i]]++,f[i][a[i]+1~n]对其取max。这样是可以线段树合并的,但实在太弱了不太会。 另一种做法是考虑扩展经典的单调队列优化LIS的做法,维护子树内答案为k时最小的最大值 阅读全文
posted @ 2018-12-01 02:01 Gloid 阅读(198) 评论(0) 推荐(0) 编辑