4.8省选练习

距离省选越来越近了,心态反而更平和了,或许是好事吧

T1

个人感觉,泰勒展开比较直观

无非让求这个式子

i=1mxx+bi(x[1,2])

首先化简一下

mi=1mbix+bi

每次枚举m项必然得TLE

发现这个式子带入很麻烦,考虑能否把m个式子合成一项,由于题目对精度要求不是很高,我们考虑对这个式子Taylor展开一下,因为每个拆出来之后都是一个多项式形式,就可以处理多项式系数然后直接带入了

我们祭出数学whk知识,Taylor级数

题目说了x[1,2]那么我们在1.5处展开即可,直接预处理多项式系数,带入即可

不会吧不会吧,@Zwaire不会Taylor展开!!!

考虑f(x)x0展开

i=0(f(i)(x0)i!(xx0)i)

我们考虑g(x)=bix+bi展开

给出结论吧

g(i)(x)=(1)ibi×i!(x+bi)i+1(xx0)i

然后我们将x=1.5带入得到所有系数,直接枚举(xx0)i即可

g(x)=i=0(1)ibi(x+bi)(i+1)(xx0)i

#define Eternal_Battle ZXK #include<bits/stdc++.h> #define MAXN 1000005 #define MAXK 30 using namespace std; const double del=1.5; double a[MAXN],b[MAXN],xs[35]; int n,m; int main() { freopen("owo.in","r",stdin); freopen("owo.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%lf",&a[i]); for(int i=1;i<=m;i++) scanf("%lf",&b[i]); for(int i=1;i<=m;i++) { double One=1.0,fz=b[i]*1.0,fm=(del+b[i]); xs[0]+=One*fz/fm; for(int j=1;j<=MAXK;j++) { One*=-1.0; fm*=(del+b[i]); xs[j]+=One*fz/fm; } } for(int i=1;i<=n;i++) { double One=1.0,res=1.0,Ans=0.0; Ans+=m; Ans-=res*xs[0]; for(int j=1;j<=MAXK;j++) { res*=(a[i]-del); Ans-=res*xs[j]; } printf("%.5f ",Ans); } }

T2

每一维度独立计算之后合并比较显然

考虑我们只需要枚举在各个维度走多少步进行合并

考虑dp[i]表示走了i步第一次到的所有方案数

dp[i]=(2k)idp[j]×h[ij]

就是所有的i不方案减去原来第一次方案又走回来的方案数

h直接背包即可

h[now][i]+=h[now1][j]×C(2×(ij),ij)×C(2×i,2×j)

T3

极像原来那道路径求交题

那么这道题也是按照那个公式

路径求交公式

(s[x],s[y])设为1,2

(t[x],t[y])设为3,4

jd1=LCA(1,2) xor LCA(1,3) xor LCA(2,3)

jd2=LCA(1,2) xor LCA(1,4) xor LCA(2,4)

然后判断一下就好了


__EOF__

本文作者Eternal_Battle
本文链接https://www.cnblogs.com/Eternal-Battle/p/16119812.html
关于博主:这个世界除了你,都知道我喜欢你
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Gnomeshgh_k  阅读(27)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示