摘要: 线性基合并O(log^2n)不能更小 但是倍增O(qlog^3n)可过233333 甚至树剖O(qlog^4n)可过666666 还有一个树上路径查找利器:点分治! 询问离线 枚举重心,处理路径过重心的询问 边dfs边插入线性基,维护每个点到根路径上的线性基 每个询问,如果所属不同的子树,那么过当前 阅读全文
posted @ 2019-01-02 22:18 *Miracle* 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 二分第k个的区间+主席树查询即可 主席树区间永久化标记,或者数组差分+前缀和查询 O(nlog^2n) 离散化和重复值的细节注意 阅读全文
posted @ 2019-01-02 22:11 *Miracle* 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 思路类似:[NOI2010]航空管制 在保证1最小的情况下,2最小……………… 正着小根堆贪心topo并不行 因为2,3可能会被前面大的数字盖住 反过来想,一个数尽可能靠前,意味着比它大的数尽可能在后面 所以反向topo 大根堆,每次选择最大的放在最后面 这样对于一个i,比i大的数一定都尽可能放在了 阅读全文
posted @ 2019-01-02 22:04 *Miracle* 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 二元组的限制 考虑拓扑排序 正向拓扑不能保证最优,因卡的是结束时间 所以方向建图topo 从n为0时间, 相当于在n-k[i]的时间出现一架飞机 小根堆维护,每次选择当前最早出现的一架飞机起飞。 由于保证有解,这个显然是正确的,对于当前只有一架飞机,不飞白不飞(当然也不能不飞);多架飞机,先飞后飞反 阅读全文
posted @ 2019-01-02 22:01 *Miracle* 阅读(236) 评论(0) 推荐(0) 编辑
摘要: bzoj2395[Balkan 2011]Timeismoney最小乘积生成树 两个属性 考虑化成二维平面的点 每一个方案对应二维平面上的一个点(t,c) 答案一定在下凸壳上 先找到t,c的最小生成树点A,B这两者一定在凸包上 连线AB,找下面距离AB最远点C 即CA CB叉积最小(注意带符号) 推 阅读全文
posted @ 2019-01-02 17:17 *Miracle* 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 即子串中形如AABB的串的个数 考虑枚举中间的位置 en[i]表示形如AA的以i结尾个数,st[i]表示开头 ans=sigma::en[i]*st[i+1] 考虑en[i] 连续(间隔一定长度)相等的子串个数,, 一个套路的做法:bzoj 2119 股市的预测 枚举A的长度L 插成(n/L)个点, 阅读全文
posted @ 2019-01-02 17:12 *Miracle* 阅读(122) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-01-02 16:45 *Miracle* 阅读(1) 评论(0) 推荐(0) 编辑
摘要: [WC2011]最大XOR和路径 本题关键是抓住xor的性质:a^b^a=b 异或两次等于0 1到N,一定是走一条路,可能再往别处走出环 每个环都可以“独立”走出来 1到N的路径,可以拆成任意一条路和若干个环拼成的 dfs找环,加入线性基 随便找一条路,在线性基中查询 能变大就异或上去。 O(M*6 阅读全文
posted @ 2019-01-02 07:29 *Miracle* 阅读(218) 评论(0) 推荐(0) 编辑
摘要: [NOI2009]管道取珠 转化为取两次相同的方案数 f[i][j][k][p] p=i+j-k去掉一维 滚动数组去掉一维 可能的有值的f[2][j][k]不多,转移的时候if(!f[tmp][j][k]) continue 会快7倍 阅读全文
posted @ 2019-01-02 07:26 *Miracle* 阅读(250) 评论(0) 推荐(0) 编辑