codeforces
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【Codeforces696B】【寻找】
题目大意给出一棵树,求每个点的期望dfs序。解题思路可以发现当前点的dfs序只与父亲的dfs序和兄弟子树大小有关。考虑父亲有x个儿子,则有x!种排列,一个子树排在第i位有(x-1)!种情况,可以算出其他子树在当前子树前的次数,加上他的贡献。最后得出了f[son]=f[now]+(size[now]-size[son]-1)/2.0+1。直接遍历就可以了。code#include<set>#incl原创 2016-08-01 16:01:16 · 471 阅读 · 0 评论 -
【codeforces 813E】【Army Creation】【数据结构】
题目大意给出一列序列,不同的数代表不同的颜色。每次询问一段区间,求一个子集(每个数可选可不选)每种颜色的数不超过K,最大的集合大小是多少。解题思路先求出b[i],代表每个数往后的连续区间第一个同种颜色超过K个的位置是哪里。询问一个区间时所包含的b,b[i]在区间里面的数一定不可取。对于这个问题可以用主席树解决。code#include<cstdio>#include<cmath>#include原创 2017-06-13 16:13:29 · 707 阅读 · 0 评论 -
【codeforces猎题记录】【题解口胡】【不定时更新】
说在前面以下题解均为口胡(粗略思考后并未实现),欢迎神犇指正。CF 792E有很多堆(n)球,一堆有很多个球(ai),求把球分成x或x+1个一份,最少分成多少份。题解:o(n sqrt(ai))当x小于sqrt(n)时直接枚举x,当x大于sqrt(n)时可以枚举分成多少块,计算出x,即和前面的情况一样。CF 786C序列上有n个有颜色的人,k为一组最多有多少个不同颜色的人,求对于每个k最少分成多少组原创 2017-04-06 15:39:50 · 399 阅读 · 0 评论 -
【jzoj3854】【CF173E】【Camping Groups】【分组】【数据结构】
题目大意Bsny所在的精灵社区有n个居民,每个居民有一定的地位和年龄,ri表示第i个人的地位,ai表示第i个人的年龄。最近社区里要举行活动,要求几个人分成一个小组,小组中必须要有一个队长,要成为队长有这样的条件:1、队长在小组中的地位应该是最高的(可以并列第一);2、小组中其他成员的年龄和队长的年龄差距不能超过K。有些人想和自己亲密的人组在同一个小组,同时希望所在的小组人越多越好。比如x和y想在同一原创 2017-01-16 20:01:36 · 456 阅读 · 0 评论 -
【jzoj3824】【codeforces RCC 2014 Warmup (Div. 1) D】【Big Problems for Organizers】【树】
题目大意给出一棵树,每次询问两个点,任意一个点到这两个点距离最小值最大是多少。解题思路首先我们发现最远的点对一定经过直径,不然直径就不是这一条了。先找出直径,求出每个点在哪个点接入直径,直径上的点到接入它的最远点最远是多少。求出询问的两个点在直径上的中点是那个,答案可能是直径端点到询问的两个点的距离,也可能是询问的两个点到它控制的范围内的最远点,中点的左右,这个我们可以用rmq来做。可以证明答案一定原创 2017-01-13 19:18:10 · 592 阅读 · 0 评论 -
【Codeforces662B】【Graph Coloring】
题目大意给出一个图,边有两种颜色,可以改变一个点相连边的颜色,都取反,求最少改变多少个点使得全部边颜色一样。解题思路可以发现一个点最多改变一次,由于只有两种颜色,一条边只和两个点有关,知道一个点必可求出另一个点的状态,可以暴力求解,具体怎么暴力可以看代码,注意可能有多个连通块。code#include<set>#include<cmath>#include<cstdio>#include<cs原创 2016-07-20 21:46:10 · 621 阅读 · 0 评论 -
【Codeforces666B】【World Tour】【最短路】
题目大意给出一幅有向图,求出四个不同的点,两点之间走最短路,用最长的路走完四个点。解题思路跑n遍单源最短路,保存每个点最远的三个前驱,最远的三个后继。枚举中间两个点,再枚举它们的前驱和后继,判一下重,取最优答案。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#defin原创 2016-07-20 21:08:37 · 372 阅读 · 0 评论 -
【Codeforces 609E】【Stree】【最小生成树】
题目大意给出n个点,m条有权边,现对于每一条边,你需要回答出包含这条边的最小生成树的总边权值。题解一个显然的结论,无论怎么样,生成树与最小生成树不同的边最多为一条。求出最小生成树,枚举加入哪条边,用倍增算法求出所加边在树上路径边权的最大值,更改答案即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#incl原创 2016-07-12 15:24:27 · 541 阅读 · 0 评论 -
【codeforces685B686D】【Kay and Snowflake】【线段树合并】
题目大意给定30万个点的树,要求支持30万个询问,询问以某个点为根的子树的重心。题解给每的节点建立权值线段树,记录每个子节点为根的子树大小。重心为根的子树大小最接近但大于全树大小的一半。使用线段树合并即可解决本问题。原创 2016-06-26 20:28:55 · 634 阅读 · 0 评论 -
【Codeforces 682D】【String】
题目大意有两种字符串S,T。长度分别为n,m。现在需要在S里面有序地选出k个子串,且在T中出现的顺序与这k个子串的顺序相同。问这k个子串最大的长度和题解lcs的变种,设f[i][j][k][0,1]s匹配到i,t匹配到j,分成k块,是否需要新开块。按照s[i]与t[j]比较结果转移,i,j都加1,f也加1,看要不要开块。i,j分别加1,f不变,打一个开块的标记。详细看代码。code#include<原创 2016-07-12 15:32:53 · 439 阅读 · 0 评论 -
【Codeforces678E】【锦标赛】
题目大意有n个人,两两决斗有一定概率胜,求安排出场顺序后第一个人最大的获胜概率。解题思路考虑到数据较小,我们可以状压。直观的方法我们可以不断添加人,记录当前擂主,可惜这无法使第一个人尽可能赢。我们可以考虑倒着做,知道谁后添加,再不断向前,这样我们就可以使第一个人尽量赢。code#include<set>#include<cmath>#include<cstdio>#include<cstrin原创 2016-08-01 15:39:58 · 523 阅读 · 0 评论 -
【codeforces 808E】【Selling Souvenirs】【贪心】【动态规划】
题目大意很多个物体01背包,size小于等于3,求给定容量最大价值。解题思路考虑只有1和2的情况,先排一波序,设f[i]表示用了i容量的最大价值,顺便存一下当前用了多少个2,可以发现贪心地取是正确的,方案唯一,因为我们已经排过序了。考虑3的情况,排序后一样枚举选多少个3,剩下的用1和2凑即可。code#include<cstdio>#include<cmath>#include<cstring>原创 2017-06-15 15:25:53 · 414 阅读 · 0 评论