2018年2月3日训练笔记

    集训已经过去2/3了,真是快。在今天的努力下,专辑1,3基本没有水题了,只剩下专辑2有些水题了,所以下星期的做题可能就比较难了,明天的牛客网比赛是关于数学的,所以是一定要好好打的。可能是这两天做的题目稍微水一些,遇到题目也不想写博客,一般就简单写两句题意和思路,这样写的比较快些,当然也是不利于访问量的...无所谓啦。今天做的莫比乌斯反演题目得感觉就是慢,就是这个题型代码运行太慢了,有的代码跑了10s+然后AC,然后限时是50s+。。。这种题比赛时会把服务器跑炸吧。。。

专辑1

P -Prime Distance

题解:http://blog.csdn.net/sdau20163942/article/details/79245540

 

专辑2

X -GCD 

题意:对于给出的 n 个询问,每次求有多少个数对 (x,y) ,满足 1 ≤ x ≤ b , 1 ≤ y ≤ d ,且 gcd(x,y) = k , gcd(x,y) 函数为 x 和 y 的最大公约数。

题目转化为:每次求有多少个数对 (x,y),满足1≤x≤b/k,1≤y≤d/k,且gcd(x,y)=1;

有默比乌斯反演公式,F[n]= ∑ n|d(f(d)),f[n]=∑n|d (u(d/n)*F(d))

设f[k]表示满足gcd(x,y)=k的(x,y)的对数,其中1≤x≤n,1≤y≤m

F[k]表示满足k|gcd(x,y)的(x,y)的对数,其中1≤x≤n,1≤y≤m

由F[k]=∑ k|d (f(d))有,f[k]=∑ k|d (u(d/k)*F(d))而且F(d)=(n/d)*(m/d)

本题答案就是: f(1) = ∑i=1到min(b/k/i,d/k/i)µ(i)*(n/i)*(m/i)

然后由于题目中将(x,y)与(y,x)视作相同所以要去重,比如假设b<d,把区间x∈[1,b/k],y∈[1,d/k]划分为两个区间x∈[1,b/k], y∈[1,b/k]与x∈[1,b/k], y∈[b/k,d/k],那么区间2里的x与y都不相同我们计算对数不会重复,对于区间1里的x,y是有重复的所以答案也是有重复的,由于x,y对称所以答案除2即是正确结果,ans=cal(b/k,d/k)-cal(b/k,b/k)/2;

 

专辑3

 

M -Problem b

对于给出的 n 个询问,每次求有多少个数对 (x,y) ,满足 a ≤ x ≤ b , c ≤ y ≤ d ,且 gcd(x,y) = k , gcd(x,y) 函数为 x 和 y 的最大公约数。

这个题与hdu1695 GCD不同之处在于,hdu 1695的a和c固定为1,而这里a,c不固定,假设函数cal(l,r)计算满足(1≤x≤l,1≤y≤r)内gcd(x,y)=k的对数,那么为了去重答案就是:

cal(b / k, d / k)-cal((a - 1) / k, d / k)-cal((c - 1) / k, b / k)+cal((a - 1) / k, (c - 1) / k);  

因为[1,a-1]和[1,c-1]都不在我们所求的范围内,用容斥原理即可得到公式,这里要用到分块求和,如果不做优化,就是直接枚举公约数ans += mu[i] * (l / i) * (r / i)但这样会超时,考虑到不能整除的特性,在很大一段区间内(l / i)和(r / i)的值是相同的,举个简单的例子,l = 10,r  =  11那么可以看出 i从6到10,l / i和r / i的值都是1,因此考虑分块求和,从i开始(l / i)和(r / i)的值相等区间长度为min(l / (l / i),r / (r / i)),这里可能不好理解,比如l / (l / i),设l / i =p,p表示整除时的值,那么l / p就是从i开始整除值为p的个数了。

 

S -Ignatius and the Princess III

母函数问题,题意:给出n,问用[1,n]中的数(每个数有无数个)来组成n有几种方案,

对于n可得母函数G=(1+x^1+x^2…x^n)*(1+x^2+x^4…)*(1+x^3+x^6…)*(1+x^n),虽然每个数有无限多个,但这里每个多项式内x的指数达到n就停止就好。

 

T -Holding Bin-Laden Captive!

题意:有面值分别为1、2、5的硬币num1、num2、num5个,问用这些硬币不能组成的最小面值是多少。

对于一组num1,num2,num5可得母函数:

G=(1+x^1+x^2…+x^num1)*(1+x^(1*2)+x^(2*2)+…x^(num2*2))*(1+x^(1*5)+x^(2*5)+…x^(num2*5)),化简母函数之后对于每一项ai*x^i,使得ai=0的最小的i即是答案。

 

U -Square Coins

题意:给出n,问用(1^2,2^2,3^2…17^2)中的数(每个数有无数个)来组成n有几种方案,对于n可得母函数G=(1+x^1+x^2…x^n)*(1+x^(1*4)+x^(2*4)…)*(1+x^(9)+x^(2*9)…)*(1+x^(1*289)+x^(2*289)+…),虽然每个数有无限多个,但这里每个多项式内x的指数达到n就停止就好。

 

Q -Big Event in HDU

题意;有n中物品,给出每种物品的价值val[i]和个数num[i],让把这些物品按价值平均分为两份,如果不能平均分,那么要使两者所分物品的价值和的差值尽量小,且此时要使前者的种价值大些。

这个题算是母函数里比较好的题目了,设物品总价值为sum,我们只需像以往一样列母函数算出组合成每种价值的方案数,这里我们只需组合到sum/2,因为如果能组合成sum/2那么就能平均分,否则从sum/2往两边找能组合成的离sum/2最近的价值。

G=(1+x^(val[1])+x^(2*val[1])…+x^(num[1]*val[1]))*

(1+x^(val[2])+x^(2*val[2])…+x^(num[2]*val[2]))*…

(1+x^(val[n])+x^(2*val[n])…+x^(num[n]*val[n]))*

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值