小白月赛26小结

前言:

题目质量还是不错的。记录两道没A掉的题

D.失忆药水:二分图,结论
题目大意:

给你一张完全图,让你删掉最少的边使得其不含奇环.

思路:

定理要知道:二分图不含奇环。

那么我们就是将图转化成一个完全二分图即可。

一张完全二分图的边的个数为: x ∗ y x * y xy.

想让边最多,自然是均分点。答案为: n 2 ∗ ( n − n 2 ) \frac{n}{2}*(n-\frac{n}{2}) 2n(n2n)

F.牛牛的序列
题目大意:

q q q个区间 [ L , R ] [L,R] [L,R].问你区间内每个数的因子和的总和的奇偶性.

q ≤ 1 e 5 , 1 ≤ L , R ≤ 1 e 18 q \leq 1e5 , 1 \leq L , R \leq 1e18 q1e5,1L,R1e18.

题目思路:

还是得严格的从数论角度分析问题,不然问题分析不完全啊!

回顾一下基础数论知识:

由唯一分解定理得到: x = p 1 a 1 p 2 a 2 . . . p k a k x =p_1^{a_1}p_2^{a_2}...p_k^{a_k} x=p1a1p2a2...pkak

根据乘法原理和唯一分解定理,

其因数个数 π ( x ) = ( a 1 + 1 ) ( a 2 + 2 ) . . . ( a k + k ) \pi(x)=(a_1+1)(a_2+2)...(a_k+k) π(x)=(a1+1)(a2+2)...(ak+k)

因数和为 f ( x ) = ( 1 + p 1 1 + . . + p 1 a 1 ) ∗ ( 1 + p 2 1 + . . + p 2 a 2 ) ∗ . . . ∗ ( 1 + p k 1 + . . + p k a k ) f(x)=(1+p_1^{1}+..+p_1^{a_1})*(1+p_2^{1}+..+p_2^{a_2})*...*(1+p_k^{1}+..+p_k^{a_k}) f(x)=(1+p11+..+p1a1)(1+p21+..+p2a2)...(1+pk1+..+pkak)

由于区间可加性,那么问题就是快速求区间 [ 1 , x ] [1,x] [1,x]中有多少个 f ( i ) f(i) f(i)是奇数.

所以重点分析式子 f ( x ) f(x) f(x):

要让 f ( x ) f(x) f(x)为奇数。那么也就是每个括号的结果为奇数。(只有奇数*奇数还是奇数)

由于质数一定是奇数,奇数的任意次幂还是奇数。所以想让括号结果为奇数。那就得使得每一个 a i a_i ai都为偶数,使得每个括号恰又奇数项。这样才能使 f ( x ) f(x) f(x)为奇数.

特例: 2 2 2是唯一一个为偶数的质数。那么它不管出现多少次,它括号的结果都一定是奇数。

所以当 a 2 a_2 a2为偶数时, x x x就是一个完全平方数。

a 2 a_2 a2为奇数时, x x x就是某一个完全平方数的2倍。

所以结论就是:当 x x x是一个完全平方数或者一个完全平方数的两倍时, f ( x ) f(x) f(x)是奇数,对答案有贡献。

那么问题转化为求解: [ 1 , n ] [1,n] [1,n]中完全平方数的个数以及它们的两倍的个数.

前者答案是 n \sqrt{n} n ,后者答案是 n 2 \sqrt{\frac{n}{2}} 2n .若有精度差,可以用两个二分分别求它们的个数。或者暴力解一下(作者给出的方法,还是不错的).

ll sqr(ll x){
    ll y=sqrt(x)+1;///此时一定满足y*y≥x
    while(y*y>x) y--;///使得y*y<=x
    return y;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值