上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 65 下一页
摘要: 如果将森林里每棵树都各自看做一个点,那么最后所连成的树应该是一颗菊花,否则将叶子节点父亲改为根不会更劣。 对于每个点所代表的树,其和根节点相连的点应该是到其他点距离最大值最小的点。这个点显然是直径的中点。而距离最大值就可以作为点的权值了。 显然根节点应该是权值最大的。这样连完后讨论一下答案即可。 阅读全文
posted @ 2018-09-20 13:27 Gloid 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 这个做法非常显然。 当然也可以分块。预处理出块内答案和两块间答案,块外主席树查询。 阅读全文
posted @ 2018-09-19 23:19 Gloid 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 考虑贪心,每次选价值最大的链。选完之后对于链上点dfs序暴力修改子树。因为每个点最多被选一次,复杂度非常正确。 阅读全文
posted @ 2018-09-19 22:30 Gloid 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 将两个人各自所在点视为状态,新建一个图。到达某个终点的概率等于其期望次数。那么高斯消元即可。 阅读全文
posted @ 2018-09-19 22:01 Gloid 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 以传统的维护思路特别不可做。完全想不到的一点是,如果构造一个int内的数列使其中任意三个数都不能构成三角形,项数最多的方案显然是斐波拉契数列,而斐波拉契数列的项数显然是log级的。那么我们求出询问点之间的距离,如果超过项数直接输出,否则暴力判断即可。 开始算距离的时候没把lca*2调了半天,而且明明 阅读全文
posted @ 2018-09-19 20:05 Gloid 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 考虑奇技淫巧。 首先是k=2。对向量维护一个前缀和,每次将当前向量与前缀和点乘。如果点乘结果不等于i-1&1,说明当前向量至少和之前的某个向量的数量积是2的倍数,暴力找就可以了。当然等于i-1&1也不一定就不存在,这本质上还是个随机算法,于是先random_shuffle一下。 k=3时,注意到12 阅读全文
posted @ 2018-09-19 19:28 Gloid 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 可以看做一些物品中某些互相排斥求最大价值。如果这是个二分图的话,就很容易用最小割了。 观察其给出的条件间是否有什么联系。如果两个数都是偶数,显然满足条件二;而若都是奇数,则满足条件一,因为式子列出来发现一定不能写成完全平方数。那么这就是个二分图了。 阅读全文
posted @ 2018-09-19 00:32 Gloid 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 数独立集显然是可以树形dp的,问题在于本质不同。 假设已经给树确立了一个根并且找到了所有等效(注意是等效而不是同构)子树,那么对转移稍加修改使用隔板法就行了。 关键在于找等效子树。首先将树的重心(若有两个则加一个点作为唯一重心)作为根。这样任意极大等效子树(比如某两个等效子树里面的一部分等效,那么里 阅读全文
posted @ 2018-09-18 23:13 Gloid 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 容易发现如果求出最后的序列,只要算一下LIS就好了。序列用平衡树随便搞一下,这里种一棵splay。 阅读全文
posted @ 2018-09-18 19:28 Gloid 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 由二项式定理,(m+1)k=ΣC(k,i)*mi。由此可以构造矩阵转移,将mi*ik全部塞进去即可,系数即为组合数*m。复杂度O(m3logn),因为大常数喜闻乐见的T掉了。 #include<iostream> #include<cstdio> #include<cmath> #include<c 阅读全文
posted @ 2018-09-18 13:39 Gloid 阅读(215) 评论(0) 推荐(0) 编辑
上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 65 下一页