codeforces 题目口胡

1288 F. Red-Blue Graph

每条边有三种情况,我们用从左往右有1的流表示边被染成了红色,从右往左有1的流表示染成了蓝色,一条边没有流就是没有染色。那么左边红色的点流出应该大于流入,蓝色的点流入大于流出,而右边的点相反。建立一个超级源 S S S超级汇 T T T,对于所有无颜色的点 u u u,连接 ( S , u ) (S,u) (S,u) ( u , T ) (u,T) (u,T),流量无上限。对于其他的点,如果希望流入大于流出,就连接到超级汇,下限为1无上限的边,如果希望流出大于流入,就从超级源连过来,下限设为1。对于中间的边,建为一对单向边,上限为1,费用分别为r和b。这样就是一个带上下界的最小费用可行流。由于一对双向边同时流一定不优,所以不会发生这种情况。

1292 D. Chaotic V.

可以看出这是一棵有根树,树的根是1。现在要找到树的带权重心,计算距离之和。实际上就是找到子树大小大于等于 1 2 n \frac{1}{2}n 21n最小的子树的根。考虑 k ! k! k!,越接近的阶乘在树上的最近公共祖先深度越大。两个相邻的阶乘 k ! k! k! ( k + 1 ) ! (k+1)! (k+1)!的最近公共祖先的深度就是公共最大质因子的个数,先预处理出相邻的公共祖先深度,按深度排序,逐个合并,找到重心再统计答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值