日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客练习赛 55

發(fā)布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客练习赛 55 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

A - 等火車

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<queue> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<unordered_map> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int mod=1e9+7; int main() {IO;int T=1;//cin>>T;while(T--){int s,q;cin>>s>>q;while(q--){int t;cin>>t;if(t%s) cout<<s-t%s<<'\n';else cout<<0<<'\n';}}return 0;}

B - 數(shù)字游戲

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<queue> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<unordered_map> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int mod=1e9+7; int main() {IO;int T=1;//cin>>T;while(T--){ll n;cin>>n;cout<<n-1<<'\n';}return 0;}

C - 最大生成樹

貪心直接求即可

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<queue> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<unordered_map> using namespace std; typedef long long ll; typedef pair<int,int> pii; const ll mod=998244353; int main() {IO;int T=1;//cin>>T;while(T--){ll n;cin>>n;ll a=n/2;a%=mod;cout<<((3*a*a%mod-3*a%mod+1)%mod+mod)%mod;}return 0;}

E - 樹

真就化簡式子唄???
dist(x,y)=dep(x)+dep(y)?2dep(lca(x,y))dist(x,y)=dep(x)+dep(y)-2dep(lca(x,y))dist(x,y)=dep(x)+dep(y)?2dep(lca(x,y))
于是可知
∑x=1n∑y=1ndist2(x,y)=∑x=1n∑y=1ndep2(x)+dep2(y)+2dep(x)dep(y)+4dep2(lca(x,y))?4dep(lca(x,y))×(dep(x)+dep(y))\sum_{x=1}^{n}\sum_{y=1}^{n}dist^2(x,y)=\sum_{x=1}^{n}\sum_{y=1}^{n}dep^2(x)+dep^2(y)+2dep(x)dep(y)+4dep^2(lca(x,y))-4dep(lca(x,y))×(dep(x)+dep(y))x=1n?y=1n?dist2(x,y)=x=1n?y=1n?dep2(x)+dep2(y)+2dep(x)dep(y)+4dep2(lca(x,y))?4dep(lca(x,y))×(dep(x)+dep(y))
對于前三項
∑x=1n∑y=1ndep2(x)+dep2(y)=2∑x=1ndep2(x)\sum_{x=1}^{n}\sum_{y=1}^{n}dep^2(x)+dep^2(y)=2\sum_{x=1}^{n}dep^2(x) x=1n?y=1n?dep2(x)+dep2(y)=2x=1n?dep2(x)
2∑x=1n∑y=1ndep(x)dep(y)=2∑x=1ndep(x)∑y=1ndep(y)=2(∑x=1ndep(x))22\sum_{x=1}^{n}\sum_{y=1}^{n}dep(x)dep(y)=2\sum_{x=1}^{n}dep(x)\sum_{y=1}^{n}dep(y)=2(\sum_{x=1}^{n}dep(x))^22x=1n?y=1n?dep(x)dep(y)=2x=1n?dep(x)y=1n?dep(y)=2(x=1n?dep(x))2
對于后兩項可以枚舉公共祖先
∑x=1n∑y=1ndep2(lca(x,y))=∑u=lca(x,y)dep2(u)×(sz2(u)?∑j∈son(u)sz2(j))\sum_{x=1}^{n}\sum_{y=1}^{n}dep^2(lca(x,y))=\sum_{u=lca(x,y)}dep^2(u)×(sz^2(u)-\sum_{j\in son(u)}sz^2(j))x=1n?y=1n?dep2(lca(x,y))=u=lca(x,y)?dep2(u)×(sz2(u)?json(u)?sz2(j))
∑x=1n∑y=1ndep(lca(x,y))×(dep(x)+dep(y))=∑u=lca(x,y)[2∑j∈son(u)sum(j)(sz(u)?sz(j))+2dep(u)sz(u)]\sum_{x=1}^{n}\sum_{y=1}^{n}dep(lca(x,y))×(dep(x)+dep(y))=\sum_{u=lca(x,y)}[2\sum_{j\in son(u)}sum(j)(sz(u)-sz(j))+2dep(u)sz(u)]x=1n?y=1n?dep(lca(x,y))×(dep(x)+dep(y))=u=lca(x,y)?[2json(u)?sum(j)(sz(u)?sz(j))+2dep(u)sz(u)]

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<queue> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<unordered_map> using namespace std; typedef long long ll; typedef pair<int,int> pii; const int N=1000010; const ll mod=998244353; int h[N],e[2*N],ne[2*N],idx; ll dep[N],sum[N],sz[N]; ll res; int n; void add(int a,int b) {e[idx]=b;ne[idx]=h[a];h[a]=idx++; } void dfs1(int u,int fa) {dep[u]=dep[fa]+1;sz[u]=1;sum[u]=dep[u];for(int i=h[u];i!=-1;i=ne[i]){int j=e[i];if(j==fa) continue;dfs1(j,u);sz[u]+=sz[j];sum[u]=(sum[u]+sum[j])%mod;} } void dfs2(int u,int fa) {ll s1=sz[u]*sz[u]%mod,s2=2*dep[u]*sz[u]%mod;for(int i=h[u];i!=-1;i=ne[i]){int j=e[i];if(j==fa) continue;dfs2(j,u);s1=(s1-sz[j]*sz[j]%mod)%mod;s2=(s2+2*sum[j]*(sz[u]-sz[j])%mod)%mod;}res=(res+4*s1*dep[u]%mod*dep[u])%mod;res=(res-4*s2*dep[u]%mod)%mod; } int main() {IO;int T=1;//cin>>T;while(T--){memset(h,-1,sizeof h);cin>>n;for(int i=1;i<n;i++){int a,b;cin>>a>>b;add(a,b),add(b,a);}dfs1(1,0);ll s=0;for(int i=1;i<=n;i++) {s=(s+dep[i])%mod;res=(res+2ll*n*dep[i]%mod*dep[i])%mod;}res=(res+2*s*s%mod)%mod;dfs2(1,0);res=(res%mod+mod)%mod;cout<<res<<'\n';}return 0; }

這就是數(shù)學(xué)的魅力嗎?愛了愛了
要加油哦~

總結(jié)

以上是生活随笔為你收集整理的牛客练习赛 55的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。