[MtOI2019]迷途之家2019联赛 ABD题解

本文解析洛谷竞赛中三道算法题目,包括最小代价分组、特定函数值域及数列求值,涵盖异或运算性质、牛顿迭代法及矩阵快速幂优化等算法技巧。

来源:

https://www.luogu.org/contest/20135

A

大意

给你一个序列,要你分成几组,每组代价为该组异或和,总共代价为每组代价和,求最小总共代价。n≤106n\leq 10^6n106

题解

结论:x⊕y≤x+yx\oplus y\leq x+yxyx+y
所以全部分成一组最优。

B

大意

f(n)=na+nbf(n)=n^a+n^bf(n)=na+nb,给定a,b,na,b,na,b,n,求满足⌊f(n′)⌋=⌊f(n)⌋\lfloor f(n')\rfloor=\lfloor f(n)\rfloorf(n)=f(n)n′n'n的范围大小。
T≤5∗106,4≤n≤5,5≤a,b≤10T\leq 5*10^6,4\leq n\leq 5,5\leq a,b\leq 10T51064n5,5a,b10

题解

二分显然,TLE,65分(100w会T)。
使用牛顿迭代,每次几乎只需要迭代2次,TLE,80分(500w会T)。
只迭代两次都挂了,说明每组数据只能用两次pow函数,在牛顿迭代之后很久想到,拿斜率近似计算其实也是很准确的,因为牛顿迭代几乎只做了一次,所以每组的ans=1f′(n)ans=\frac{1}{f'(n)}ans=f(n)1

D

大意

给出数列an=3an−1+an−2−3an−3+3n,a0=−3,a1=−6,a2=−12a_n=3a_{n-1}+a_{n-2}-3a_{n-3}+3^n,a_0=-3,a_1=-6,a_2=-12an=3an1+an23an3+3n,a0=3,a1=6,a2=12,求ana_nanT=5∗107,n≤264−1T=5*10^7,n\leq 2^{64}-1T=5107,n2641

题解

第一眼当然是矩阵快速幂,但是这么大个T怎么可能每次去算。
然后就开始了漫长的错位相减道路,一直算到比赛结束,赛后一分钟过题,我要是考高考数学的时候算错这么多次我大概已经凉了。

下面是过程:
an−an−2=3∗(an−1−an−3)+3na_n-a_{n-2}=3*(a_{n-1}-a_{n-3})+3^nanan2=3(an1an3)+3n
3−n∗(an−an−2)=3−n+1∗(an−1−an−3)+13^{-n}*(a_n-a_{n-2})=3^{-n+1}*(a_{n-1}-a_{n-3})+13n(anan2)=3n+1(an1an3)+1
令数列bn=3−n∗(an−an−2)令数列b_n=3^{-n}*(a_n-a_{n-2})bn=3n(anan2)
则易得bn=bn−1+1,b2=−1,可知bn=n−3则易得b_n=b_{n-1}+1,b_2=-1,可知b_n=n-3bn=bn1+1,b2=1bn=n3
bn=3−n∗(an−an−2)=n−3b_n=3^{-n}*(a_n-a_{n-2})=n-3bn=3n(anan2)=n3
an=3n∗(n−3)+an−2a_n=3^n*(n-3)+a_{n-2}an=3n(n3)+an2
到这里可以发现,对下标分奇偶之后可以错位相减(过程就省略了,推错了一万次),然后得到:
an=3n+2(4n−13)+21+[n为奇数]∗3032a_n=\frac{3^{n+2}(4n-13)+21+[n为奇数]*30}{32}an=323n+2(4n13)+21+[n]30
所以一看,复杂度全在3n+23^{n+2}3n+2上,然后就开始所谓的卡常(我觉得这种log级别的优化不叫卡常233)。首先n可以mod ϕ(p)\phi(p)ϕ(p),这样就在1e9的级别了,也就是预处理出[0,216−1][0,2^{16}-1][0,2161]的3的幂次,n一来先把前16位算一下,然后将n右移16位再算,就可以做到O(1)了。感觉并没有卡多少常,这么处理之后就能直接过了,可能是之前开火车遇到的卡常题太多了把,各种bitset,unordered_map,头大。

后记

C并没有做出来,很菜。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值