摘要: 树网的核 加强版,好题~可以证明,如果存在多条直径,选取任意一条直径都是等价的。证明:如图,考虑两条直径 AB, CD,其中它们的重合部分为 EF A B \ / ... 阅读全文
posted @ 2015-08-07 23:37 <Dash> 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 因为强制在线,所以无法用莫队算法。。。将序列分块,设块的大小为 X。首先预处理出第 i 块到第 j 块的答案,复杂度O(N2X)。然后对于每个询问,我们对整块以外的数重新计算对答案的贡献即可。 时间复杂度 O(NX∗logN)根据基本不等式,每块的大小为 N/logN−−−−−−−√... 阅读全文
posted @ 2015-08-07 18:38 <Dash> 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 这道题的方法虽然应用不广,但很有意思。主要是维护起始点固定时,每个结束点的答案每个点记录下一个与它颜色相同的点的位置,记为next[]。首先对于所有首次出现的点 x,将 next[x] ~ n 的答案都增加 1 然后就得到了当起始点为1时,每个结束点的答案。如果起始点pos向右移动,... 阅读全文
posted @ 2015-08-07 18:22 <Dash> 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 一道好题~用矩阵代替DP方程。对于每个房间构造一个矩阵mat,mat[i][j] = 1 或 0 表示 i 到 j 是否能到达。 然后线段树每个结点维护区间区间矩阵乘法的结果对于询问操作用矩阵乘法合并区间即可。#include #include #include #include #... 阅读全文
posted @ 2015-08-07 18:07 <Dash> 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 分析一下,每个数最多只会做5次开根操作就会小于或等于1,在这之后它的值就不会改变。。。用线段树记录区间的最大值,然后只对max > 1 的区间做开根操作即可。时间复杂度:O(M∗logN+N)#include #include #include #include #include #... 阅读全文
posted @ 2015-08-07 18:00 <Dash> 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 动态加点KM这个KM模型已经比较常见了: http://blog.csdn.net/cyxhahaha/article/details/44657619构图:X 侧点为对菜品的需求,Y 侧点为厨师对菜品的供应如果让 i 厨师在倒数第 t 次制作菜品 j,花费时间为 cost(i,j)... 阅读全文
posted @ 2015-08-07 17:52 <Dash> 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 这题很有意思哦~以最小的非零系数为模数,记为 M如果存在 W 使方程有解,W 与 W’ 在模意义下同余并且 W #include #include #include #include #include #include #include #include #include #incl... 阅读全文
posted @ 2015-08-07 17:15 <Dash> 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 1.非void类型的函数没有返回值[Dev-C++开启“编译警告”可以防止此问题]2.hash数组使用之前没有清零3.字符串hash时,hash值存在04.平衡树的Rotate函数,先pushdown儿子后pushdown父亲。5.连接双向边时,空间没有开边数的两倍。continui... 阅读全文
posted @ 2015-08-07 16:44 <Dash> 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 最小割,差异代价模型。#include #include #include #include #include #include const int maxn = 105, maxm = 105;const int noden = 10005, size = 4e5+5;const ... 阅读全文
posted @ 2015-08-07 16:33 <Dash> 阅读(112) 评论(0) 推荐(0) 编辑