[Contest] CodeChef March Challenge 2018

听说CC也分div1 div2了

Mix the Colors

如果有重复的数,就把最大的数加到这个数上,所以答案是n减去不同的数的个数

Chef and Easy Problem

从高到低枚举贪心。

Minions and Voting

对每个人二分一下它能投票的区间

Chef and Gcd Queries

对每个质因数开线段树记录一下它的倍数出现的情况
莫比乌斯反演就可以了

Pishty and Triangles

可以证明取出区间里50个数,如果这50个数中不存在能组成三角形的三个数,则无解
在线段树上搞

Chef and Interval Painting

fi,j f i , j 表示长度为 i i 的区间 j 个人去染色且出现了 j j 种颜色的方案数

那么 fi,j=k=1nfi,k(j1k1),打个表发现 fi,j f i , j 是第一类斯特林数倒序…

然后直接分治FFT求斯特林数,加点乱七八糟的优化就能过了

CUTTREE

这题刚做的时候一直没想出来…最后一天再看的时候发现自己傻逼了

这题求的是所有联通块大小的平方和的期望
转换一下就是所有点对联通的概率和

totk t o t k 表示距离为 k k 的点对个数,这个可以点分治加FFT搞

那么答案是 i=0n1(n1im)toti(n1m)

展开发现要求的东西是 n1i=0(n1i)!toti(n1im)! ∑ i = 0 n − 1 ( n − 1 − i ) ! t o t i ( n − 1 − i − m ) ! ,这是个卷积的形式,直接FFT

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值