P5518-[MtOI2019]幽灵乐团【莫比乌斯反演,欧拉反演】

正题

题目链接:https://www.luogu.com.cn/problem/P5518


题目大意

TTT次给出A,B,CA,B,CA,B,C求以下三个式子
∏i=1A∏j=1B∏k=1Clcm(i,j)gcd(i,k)\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^{C}\frac{lcm(i,j)}{gcd(i,k)}i=1Aj=1Bk=1Cgcd(i,k)lcm(i,j)
∏i=1A∏j=1B∏k=1C(lcm(i,j)gcd(i,k))i×j×k\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^{C}\left(\frac{lcm(i,j)}{gcd(i,k)}\right)^{i\times j\times k}i=1Aj=1Bk=1C(gcd(i,k)lcm(i,j))i×j×k
∏i=1A∏j=1B∏k=1C(lcm(i,j)gcd(i,k))gcd(i,j,k)\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^{C}\left(\frac{lcm(i,j)}{gcd(i,k)}\right)^{gcd(i,j,k)}i=1Aj=1Bk=1C(gcd(i,k)lcm(i,j))gcd(i,j,k)

1≤T≤70,1≤A,B,C≤1051\leq T\leq 70,1\leq A,B,C\leq 10^51T70,1A,B,C105


解题思路

开始写了个O(Tnlog⁡n)O(Tn\log n)O(Tnlogn)结果发现不能过,然后就多浪费了三个多小时
在这里插入图片描述
只需要用到两个反演的式子
F(i)=∑i∣df(d)⇒f(i)=∑i∣dμ(di)F(d)F(i)=\sum_{i|d}f(d)\Rightarrow f(i)=\sum_{i|d}\mu(\frac{d}{i})F(d)F(i)=idf(d)f(i)=idμ(id)F(d)
gcd(S)=∑∀x∈S,d∣xφ(d)gcd(S)=\sum_{\forall x\in S,d|x}\varphi(d)gcd(S)=xS,dxφ(d)

然后因为推导过程出来冗长以外没有太多难的部分,所以推荐自己手推到不会的再翻题解。

然后就开始吧,因为lcm(i,j)=ijgcd(i,j)lcm(i,j)=\frac{ij}{gcd(i,j)}lcm(i,j)=gcd(i,j)ij所以问题可以化为两个部分,求
(∏i=1A∏j=1B∏k=1Cij)f(type),(∏i=1A∏j=1B∏k=1C1gcd(i,j))f(type)\left(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Cij\right)^{f(type)},\left(\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\frac{1}{gcd(i,j)}\right)^{f(type)}(i=1Aj=1Bk=1Cij)f(type),(i=1Aj=1Bk=1Cgcd(i,j)1)f(type)

首先是第一个式子f(type)=1f(type)=1f(type)=1
第一部分就是
∏i=1AiB×C×∏j=1BjA×C\prod_{i=1}^Ai^{B\times C}\times \prod_{j=1}^Bj^{A\times C}i=1AiB×C×j=1BjA×C
这个十分简单,我们预处理阶乘就可以做到O(log⁡P)O(\log P)O(logP)
然后第二部分考虑枚举约数
∏d=11dC×∑i=1A∑j=1B[gcd(i,j)=d]\prod_{d=1}\frac{1}{d}^{C\times \sum_{i=1}^A\sum_{j=1}^B[gcd(i,j)=d]}d=1d1C×i=1Aj=1B[gcd(i,j)=d]
然后莫反
∏d=11dC∑k=1μ(k)⌊Akd⌋⌊Bkd⌋\prod_{d=1}\frac{1}{d}^{C\sum_{k=1}\mu(k)\lfloor\frac{A}{kd}\rfloor\lfloor\frac{B}{kd}\rfloor}d=1d1Ck=1μ(k)kdAkdB
显然的我们可以d,kd,kd,k都可以整除分块,预处理一下逆元的前缀乘积就可以快速计算区间逆元乘积了。

第一个式子时间复杂度O(n34)O(n^\frac{3}{4})O(n43)

然后第二个式子类似的,记S(n)=n×(n+1)2S(n)=\frac{n\times (n+1)}{2}S(n)=2n×(n+1)那么有
∏i=1AiiS(B)S(C)×∏j=1BjjS(A)(C)\prod_{i=1}^Ai^{iS(B)S(C)}\times \prod_{j=1}^Bj^{jS(A)(C)}i=1AiiS(B)S(C)×j=1BjjS(A)(C)
维护一个iii^iii的前缀积即可。
第二部分
∏d=11dS(C)×∑i=1A∑j=1Bij[gcd(i,j)=d]⇒∏d=11dS(C)∑k=1μ(k)S(⌊Akd⌋)S(⌊Bkd⌋)\prod_{d=1}\frac{1}{d}^{S(C)\times \sum_{i=1}^A\sum_{j=1}^Bij[gcd(i,j)=d]}\Rightarrow \prod_{d=1}\frac{1}{d}^{S(C)\sum_{k=1}\mu(k)S(\lfloor\frac{A}{kd}\rfloor)S(\lfloor\frac{B}{kd}\rfloor)}d=1d1S(C)×i=1Aj=1Bij[gcd(i,j)=d]d=1d1S(C)k=1μ(k)S(kdA)S(kdB)

需要提前处理μ(i)×i2\mu(i)\times i^2μ(i)×i2的前缀和,i2,1i2i^2,\frac{1}{i^2}i2,i21的前缀积就好了

第二个式子时间复杂度O(n34)O(n^\frac{3}{4})O(n43)

主要的难点在第三个式子
首先第一部分先只考虑iii
∏i=1A∏j=1B∏k=1Cigcd(i,j)\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{gcd(i,j)}i=1Aj=1Bk=1Cigcd(i,j)
考虑欧拉反演,枚举约数
∏d=1(∏i⌊Ad⌋i×d)φ(d)⌊Bd⌋⌊Cd⌋\prod_{d=1}\left(\prod_{i}^{\lfloor\frac{A}{d}\rfloor}i\times d\right)^{\varphi(d)\lfloor\frac{B}{d}\rfloor\lfloor\frac{C}{d}\rfloor}d=1idAi×dφ(d)dBdC
fi=∏j=1iif_i=\prod_{j=1}^iifi=j=1ii那么有
∏d=1(f⌊Ad⌋d⌊Ad⌋)φ(d)⌊Bd⌋⌊Cd⌋\prod_{d=1}\left(f_{\lfloor\frac{A}{d}\rfloor}d^{\lfloor\frac{A}{d}\rfloor}\right)^{\varphi(d)\lfloor\frac{B}{d}\rfloor\lfloor\frac{C}{d}\rfloor}d=1(fdAddA)φ(d)dBdC
拆开来fffddd的部分
∏d=1(f⌊Ad⌋)φ(d)⌊Bd⌋⌊Cd⌋×dφ(d)⌊Ad⌋⌊Bd⌋⌊Cd⌋\prod_{d=1}(f_{\lfloor\frac{A}{d}\rfloor})^{\varphi(d)\lfloor\frac{B}{d}\rfloor\lfloor\frac{C}{d}\rfloor}\times d^{\varphi(d)\lfloor\frac{A}{d}\rfloor\lfloor\frac{B}{d}\rfloor\lfloor\frac{C}{d}\rfloor}d=1(fdA)φ(d)dBdC×dφ(d)dAdBdC
预处理出fff数组,和ggg数组gi=∏j=1ijφ(j)g_i=\prod_{j=1}^i j^{\varphi(j)}gi=j=1ijφ(j)φ\varphiφ的前缀和就可以整除分块搞了

然后是第二部分
∏i=1A∏j=1B∏k=1C1gcd(i,j)gcd(i,j,k)\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\frac{1}{gcd(i,j)}^{gcd(i,j,k)}i=1Aj=1Bk=1Cgcd(i,j)1gcd(i,j,k)
你可以试一下枚举gcd(i,j)gcd(i,j)gcd(i,j),反正我推了好久都没有对出来/kk
所以考虑枚举gcd(i,j,k)gcd(i,j,k)gcd(i,j,k)的约数然后欧拉反演里面再莫反
∏d=1(∏k=11dk∑z=1μ(z)⌊Adkz⌋⌊Bdkz⌋)φ(d)⌊Cd⌋\prod_{d=1}\left(\prod_{k=1}\frac{1}{dk}^{\sum_{z=1}\mu(z)\lfloor\frac{A}{dkz}\rfloor\lfloor\frac{B}{dkz}\rfloor}\right)^{\varphi(d)\lfloor\frac{C}{d}\rfloor}d=1(k=1dk1z=1μ(z)dkzAdkzB)φ(d)dC
然后把1d\frac{1}{d}d11k\frac{1}{k}k1分开处理
∏d=1(∏k=11k∑z=1μ(z)⌊Adkz⌋⌊Bdkz⌋)φ(d)⌊Cd⌋\prod_{d=1}\left(\prod_{k=1}\frac{1}{k}^{\sum_{z=1}\mu(z)\lfloor\frac{A}{dkz}\rfloor\lfloor\frac{B}{dkz}\rfloor}\right)^{\varphi(d)\lfloor\frac{C}{d}\rfloor}d=1(k=1k1z=1μ(z)dkzAdkzB)φ(d)dC
×∏d=1(1d)φ(d)⌊Cd⌋∑k=1∑z=1μ(z)⌊Adkz⌋⌊Bdkz⌋\times \prod_{d=1}\left(\frac{1}{d}\right)^{\varphi(d)\lfloor\frac{C}{d}\rfloor\sum_{k=1}\sum_{z=1}\mu(z)\lfloor\frac{A}{dkz}\rfloor\lfloor\frac{B}{dkz}\rfloor}×d=1(d1)φ(d)dCk=1z=1μ(z)dkzAdkzB
(至于为什么要这么分开,会注意到第一个式子如果我们进行两次整除分块,那么对于每个1dk\frac{1}{dk}dk1就会有两个影响它的指数φ(d)\varphi(d)φ(d)∑z=1μ(z)⌊Adkz⌋⌊Bdkz⌋\sum_{z=1}\mu(z)\lfloor\frac{A}{dkz}\rfloor\lfloor\frac{B}{dkz}\rfloorz=1μ(z)dkzAdkzB所以很难处理,此时我们分开来就可以直接用区间的值来做了)

注意到这样要做三次整除分块,十分地慢,但是考虑后面那个式子∑z=1μ(z)⌊Adkz⌋⌊Bdkz⌋\sum_{z=1}\mu(z)\lfloor\frac{A}{dkz}\rfloor\lfloor\frac{B}{dkz}\rfloorz=1μ(z)dkzAdkzB对于一个固定的dkdkdk是一个确定的值的,并且因为是整除分块,所以不同的值不多我们可以考虑预处理这个东西,整除分块一个dkdkdk然后里面再整除分块计算就好了。

还有拆开后处理1d\frac{1}{d}d1的式子需要预处理1dφ(d)\frac{1}{d}^{\varphi(d)}d1φ(d)的前缀积。

然后就做完了,第三部分时间复杂度O(n+n34log⁡n)O(n+n^{\frac{3}{4}}\log n)O(n+n43logn)

实际上其实最后的式子两个部分可以约掉一些东西省一些常数,但是这样做也能过但是得开int。

或者你可以用别的方法卡卡常反正我开int了。


code

因为中途long long改int所以代码巨丑

#include<cstdio>
#include<cstring>
#include<algorithm>
//#define int long long
using namespace std;
const int N=1e5+10;
int T,P,Phi,A,B,C,ans,cnt;bool v[N];
int pri[N/10],mu[N],su[N],phi[N],f[N],g[N],h[N];
int inv[N],inc[N],inw[N],fac[N],gac[N],hac[N];
int power(int x,int b){int ans=1;b=(b%Phi+Phi)%Phi;while(b){if(b&1)ans=ans*1ll*x%P;x=x*1ll*x%P;b>>=1;}return ans; 
}
int Sum(int n)
{return n*1ll*(n+1)/2%Phi;}
int Tum(int n)
{return n*1ll*(n+1)*1ll*(2ll*1ll*n+1)/6ll%Phi;} 
void Prime(){mu[1]=phi[1]=1;for(int i=2;i<N;i++){if(!v[i])pri[++cnt]=i,mu[i]=-1,phi[i]=i-1;for(int j=1;j<=cnt&&i*1ll*pri[j]<N;j++){v[i*1ll*pri[j]]=1;if(i%pri[j]==0){phi[i*1ll*pri[j]]=phi[i]*1ll*pri[j];break;}mu[i*1ll*pri[j]]=-mu[i];phi[i*1ll*pri[j]]=phi[i]*1ll*(pri[j]-1);}}inc[1]=fac[0]=gac[0]=inw[0]=inv[0]=hac[0]=1;for(int i=2;i<N;i++)inc[i]=P-inc[P%i]*1ll*(P/i)%P;for(int i=1;i<N;i++)fac[i]=fac[i-1]*1ll*i%P;for(int i=1;i<N;i++)gac[i]=gac[i-1]*1ll*power(i,i)%P;for(int i=1;i<N;i++)hac[i]=hac[i-1]*1ll*power(i,i*1ll*i%Phi)%P;for(int i=1;i<N;i++)inw[i]=inw[i-1]*1ll*power(inc[i],i*1ll*i%Phi)%P;for(int i=1;i<N;i++)inv[i]=inv[i-1]*1ll*inc[i]%P;for(int i=1;i<N;i++)su[i]=su[i-1]+mu[i];g[0]=h[0]=1;for(int i=1;i<N;i++)g[i]=g[i-1]*1ll*power(inc[i],phi[i])%P;for(int i=1;i<N;i++)h[i]=h[i-1]*1ll*power(i,phi[i])%P;for(int i=1;i<N;i++)(phi[i]+=phi[i-1])%=Phi;return;
}
void qart1(int A,int B,int C){int n=min(A,B);for(int L=1,R;L<=n;L=R+1){R=min(A/(A/L),B/(B/L));int a=A/L,b=B/L,m=min(a,b),w=0;for(int l=1,r;l<=m;l=r+1){r=min(a/(a/l),b/(b/l));(w+=(su[r]-su[l-1])*(a/l)*1ll*(b/l)%Phi)%=Phi;}ans=ans*1ll*power(inv[R]*1ll*fac[L-1]%P,w*1ll*C%Phi)%P;}return;
}
void part1(){ans=power(fac[A],B*1ll*C%Phi)*1ll*power(fac[B],A*1ll*C%Phi)%P;qart1(A,B,C);qart1(A,C,B);printf("%d ",ans);return;
}
void qart2(int A,int B,int C){int n=min(A,B);for(int i=1;i<=n;i++)f[i]=(f[i-1]+mu[i]*1ll*i*1ll*i%Phi)%Phi;for(int L=1,R;L<=n;L=R+1){R=min(A/(A/L),B/(B/L));int a=A/L,b=B/L,m=min(a,b),w=0;for(int l=1,r;l<=m;l=r+1){r=min(a/(a/l),b/(b/l));(w+=Sum(a/l)*1ll*Sum(b/l)%Phi*1ll*(f[r]-f[l-1])%Phi)%=Phi;}w=w*1ll*Sum(C)%Phi;ans=ans*1ll*power(inw[R]*1ll*hac[L-1]%P,w)%P;}return;
}
void part2(){ans=power(gac[A],Sum(B)*1ll*Sum(C)%Phi)*1ll*power(gac[B],Sum(A)*1ll*Sum(C)%Phi)%P;qart2(A,B,C);qart2(A,C,B);printf("%d ",ans);return;
}
void qart3(int A,int B,int C){int n=min(A,B);for(int L=1,R;L<=n;L=R+1){R=min(A/(A/L),B/(B/L));int a=A/L,b=B/L,m=min(a,b),w=0;for(int l=1,r;l<=m;l=r+1){r=min(a/(a/l),b/(b/l));(w+=1ll*(a/l)*(b/l)*(su[r]-su[l-1])%Phi)%=Phi;}for(int i=L;i<=R;i++)f[i]=w;}n=min(n,C);for(int L=1,R;L<=n;L=R+1){R=min(A/(A/L),min(B/(B/L),C/(C/L)));int a=A/L,b=B/L,c=C/L,m=min(a,b),w=0,s=1;for(int l=1,r;l<=m;l=r+1){r=min(a/(a/l),b/(b/l));(w+=1ll*f[l*1ll*L]*(r-l+1)%Phi)%=Phi; s=1ll*s*power(1ll*inv[r]*fac[l-1]%P,f[l*1ll*L])%P;}ans=ans*1ll*power(1ll*g[R]*power(g[L-1],P-2)%P,1ll*w*(C/L)%Phi)%P;ans=ans*1ll*power(s,1ll*(phi[R]-phi[L-1])*(C/L)%Phi)%P;}
//	for(int i=1;i<=A;i++)
//		for(int j=1;j<=B;j++)
//			for(int k=1;k<=C;k++)
//				ans=ans*1ll*power(inc[__gcd(i,j)],__gcd(__gcd(i,j),k))%P;return;
}
void part3(){ans=1;int n=min(A,min(B,C));for(int L=1,R;L<=n;L=R+1){R=min(A/(A/L),min(B/(B/L),C/(C/L)));int a=A/L,b=B/L,c=C/L;
//		b=fac[b]*1ll*power(Sum(R)-Sum(L-1),b)%P;ans=1ll*ans*power(fac[a],1ll*(phi[R]-phi[L-1])*b*c%Phi)%P;ans=1ll*ans*power(fac[b],1ll*(phi[R]-phi[L-1])*a*c%Phi)%P;ans=1ll*ans*power(h[R]*1ll*power(h[L-1],P-2)%P,2ll*a*b*c%Phi)%P;}
//	int k=ans;qart3(A,B,C);qart3(A,C,B);
//	else ans=1ll*ans*ans%P*power(k,P-2)%P;printf("%d ",ans);return;
}
signed main()
{scanf("%d%d",&T,&P);Phi=P-1;Prime();while(T--){scanf("%d%d%d",&A,&B,&C);
//		A=B=C=1e5;part1();part2();part3();putchar('\n');}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2020牛客NOIP赛前集训营-提高组(第二场)】题解(GCD,包含,前缀,移动)

文章目录T1&#xff1a;GCDtitlesolutioncodeT2&#xff1a;包含titlesolutioncode(正解code补充在上面了)T3&#xff1a;前缀titlesolutioncodeT4&#xff1a;移动titlesolutioncodeT1&#xff1a;GCD title solution 非常水&#xff0c;看一眼就知道了 首先我们知道每一个…

.NET Core实战项目之CMS 第十五章 各层联动工作实现增删改查业务

连着两天更新叙述性的文章大家可别以为我转行了&#xff01;哈哈&#xff01;今天就继续讲讲我们的.NET Core实战项目之CMS系统的教程吧&#xff01;这个系列教程拖得太久了&#xff0c;所以今天我就以菜单部分的增删改查为例来讲述下我的项目分层之间的协同工作吧&#xff01;…

[2020-11-23 contest]图(dfs剪枝),劫富济贫(字典树),小A的树(树形DP),游戏(贪心/斜率优化)

文章目录T1&#xff1a;图solutioncodeT2&#xff1a;劫富济贫solutioncodeT3&#xff1a;小A的树solutioncodeT4&#xff1a;游戏solutioncodeT1&#xff1a;图 【问题描述】 给你一个n个点&#xff0c;m条边的无向图&#xff0c;每个点有一个非负的权值ci&#xff0c;现在你…

P1742 最小圆覆盖

P1742 最小圆覆盖 题意&#xff1a; 给出N个点&#xff0c;让你画一个最小的包含所有点的圆。 题解&#xff1a; 先说结论&#xff1a; 最优解的圆一定是在以某两个点连线为直径的圆 或者 某三个点组成的三角形的外接圆 初始化将某个圆心定为第一个点&#xff0c;R0 枚举第…

Java实现非对称加密【详解】

Java实现非对称加密 1. 简介2. 非对称加密算法--DH&#xff08;密钥交换&#xff09;3. 非对称加密算法--RSA非对称加密算法--EIGamal5. 总结6 案例6.1 案例16.2 案例26.3 案例3 1. 简介 公开密钥密码学&#xff08;英语&#xff1a;Public-key cryptography&#xff09;也称非…

轻量级.Net Core服务注册工具CodeDi发布啦

为什么做这么一个工具因为我们的系统往往时面向接口编程的,所以在开发Asp .net core项目的时候,一定会有大量大接口及其对应的实现要在ConfigureService注册到ServiceCollection中,传统的做法是加了一个服务,我们就要注册一次(service.AddService()),又比如,当一个接口有多个实…

2020 CSP-S 游记

迟到的游记总述T1&#xff1a;儒略日T2&#xff1a;动物园T3&#xff1a;函数调用T4&#xff1a;贪吃蛇总结总述 可能是有了去年第一次的狂炸经历&#xff0c;很明显的就是在考试策略上的提升 头不铁了&#xff0c;手不残了&#xff0c;心态稳了&#xff0c;分也多了 T1&…

P7516-[省选联考2021A/B卷]图函数【bfs】

正题 题目链接:https://www.luogu.com.cn/problem/P7516 题目大意 懒了&#xff0c;直接抄题意了 对于一张 nnn 个点 mmm 条边的有向图 GGG&#xff08;顶点从 1∼n1 \sim n1∼n 编号&#xff09;&#xff0c;定义函数 f(u,G)f(u, G)f(u,G)&#xff1a; 初始化返回值 cnt0cn…

【.NET Core项目实战-统一认证平台】第十三章 授权篇-如何强制有效令牌过期

上一篇我介绍了JWT的生成验证及流程内容&#xff0c;相信大家也对JWT非常熟悉了&#xff0c;今天将从一个小众的需求出发&#xff0c;介绍如何强制令牌过期的思路和实现过程。.netcore项目实战交流群&#xff08;637326624&#xff09;&#xff0c;有兴趣的朋友可以在群里交流讨…

[2020-11-24 contest]糖果机器(二维偏序),手套(状压dp),甲虫(区间dp),选举(线段树 最大子段和)

文章目录T1&#xff1a;糖果机器solutioncodeT2&#xff1a;手套solutioncodeT3&#xff1a;甲虫solutioncodeT4&#xff1a;选举solutioncodeT1&#xff1a;糖果机器 solution 考虑从第iii个糖果出发能到达第jjj个&#xff0c;则有Tj−Ti≥∣Sj−Si∣T_j-T_i≥|S_j-S_i|Tj​…

ASP.NET Core 数据加解密的一些坑

点击蓝字关注我ASP.NET Core 给我们提供了自带的Data Protection机制&#xff0c;用于敏感数据加解密&#xff0c;带来方便的同时也有一些限制可能引发问题&#xff0c;这几天我就被狠狠爆了一把我的场景我的博客系统有个发送邮件通知的功能&#xff0c;因此需要配置一个邮箱账…

[2020-11-28 contest]素数(数学),精灵(区间dp),农夫约的假期(结论),观察(树链剖分lca+set)

文章目录素数solutioncode精灵solutioncode农夫约的假期solutioncode观察solutionsolutioncode素数 solution 通过观察可得一个结论 对于两个相邻的质数p1,p2(p1<p2)p_1,p_2\ (p_1<p_2)p1​,p2​ (p1​<p2​) 对于x∈[p1,p2)x∈[p_1,p_2)x∈[p1​,p2​)&#xff0c;都…

B. Box Fitting

B. Box Fitting 题意&#xff1a; 现在有n个长方形&#xff0c;宽均为1&#xff0c;现在有一个底为m的容器&#xff0c;问将长方形放入其中&#xff0c;所用容器的最小宽度是多少 &#xff08;长方形必须长朝下放置详细如图&#xff09; 题解&#xff1a; 比赛时脑子抽了。…

人工智能第六课:如何做研究

这是我学习 Data Science Research Methods 这门课程的笔记。这门课程的讲师是一名教授和数据科学家&#xff0c;可能因为他既有理论背景&#xff0c;又有实践经验&#xff0c;所以整个课程听下来还比较舒服&#xff0c;学到了一些不错的理论知识。这门课比较系统地介绍了什么…

[2020-11-30 contest]数列(矩阵加速),秘密通道(dijkstra最短路)小X游世界树(换根dp),划分(数学)

文章目录数列solutioncode秘密通道solutioncode小X游世界树solutioncode划分solutioncode数列 a[1]a[2]a[3]1 a[x]a[x-3]a[x-1] (x>3) 求 a 数列的第 n 项对 1000000007&#xff08;10^97&#xff09;取余的值。 输入格式 第一行一个整数 T&#xff0c;表示询问个数。 以下…

Docker最全教程——数据库容器化之持久保存数据(十二)

上一节我们讲述了SQL Server容器化实践&#xff08;注意&#xff0c;SQL Server现在也支持跨平台&#xff09;&#xff0c;本节将讲述如何持久保存数据&#xff0c;并且接下来将逐步讲解其他数据库&#xff08;MySql、Redis、Mongodb等等&#xff09;的容器化实践&#xff0c;中…

【李超树】李超线段树维护凸包(凸壳) (例题:blue mary开公司+线段游戏+ZZH的旅行)

文章目录前言李超树引入(斜率优化)什么是李超树&#xff1f;李超树活着能干点什么&#xff1f;算法思想(使用手册&#xff1f;)插入查询模板判断是否覆盖(优不优)插入查询例题板题&#xff1a;BlueMary开公司分析code线段游戏分析code拓展——(动态开点李超树维护凸包)ZZH的旅行…

老牌开源Office操作组件NPOI现已支持.NET Core

昨天在微信群里听到老牌Excel开发利器NPOI的作者瞿总说4.6.1版本的NPOI已经支持.NET Standard 2.0了&#xff0c;这也就意味着你可以在.NET Core中使用NPOI了。作者&#xff1a;依乐祝原文地址 &#xff1a;https://www.cnblogs.com/yilezhu/p/10269281.html写在前面曾经的.NET…

.NET西安社区 [拥抱开源,又见 .NET] 第二次活动简报

「拥抱开源, 又见 .NET」随着 .NET Core的发布和开源&#xff0c;.NET又重新回到人们的视野。 .NET Core的下个3.0即将release&#xff0c;加入非常多的新功能&#xff0c;越来越拥抱变化&#xff0c;DevOps和Microservice的最佳实践已经在 .NET Core落地&#xff0c;比如 Ocel…

[dsu on tree]树上启发式合并总结(算法思想及模板附例题练习)

文章目录前言树上启发式合并引入算法思想时间复杂度模板练习例题&#xff1a;CF600E Lomsat gelralsolutioncodeCF208E Blood CousinssolutioncodeCF570D Tree RequestssolutioncodeCF1009F Dominant Indicessolutioncode前言 最近不是在⛏李超树嘛&#xff0c;然后就去玩了下…