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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2019牛客暑期多校训练营(第四场)

發(fā)布時間:2024/10/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2019牛客暑期多校训练营(第四场) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Problem A?meeting

https://ac.nowcoder.com/acm/contest/884/A

題意:

題解:

C++版本一

#include<bits/stdc++.h> using namespace std; const int N=1e5+7; //樹直徑都是這么求的 int vis[N]; int len111,lll;///保留最長長度和距離最遠(yuǎn)的點 int a[N]; vector<int> son[N]; void dfs(int len,int fa,int x) {for(int i=0;i<son[x].size();i++)if(son[x][i]!=fa){if(vis[son[x][i]]==1){if(len111<len){len111=len;lll=son[x][i];}}dfs(len+1,x,son[x][i]);} } int main() {ios::sync_with_stdio(false);int n,k;cin>>n>>k;for(int i=1;i<n;i++){int a,b;cin>>a>>b;son[a].push_back(b);son[b].push_back(a);}for(int i=1;i<=k;i++){cin>>a[i];vis[a[i]]=1;}dfs(1,a[1],a[1]);//cout<<lll<<' '<<len111<<endl;dfs(1,lll,lll);cout<<(len111+1)/2<<endl; }

Problem B?xor

?

題意:

題解:

C++版本一

?

Problem C?sequence

https://ac.nowcoder.com/acm/contest/884/C

題意:

題解:

C++版本一

#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=3e6+10; const int INF=0x3f3f3f3f; LL n,top,a[N],b[N],L[N],R[N],Sum[N],Lmin[N],Rmin[N]; struct dat{LL idx,val; }S[N];int main() {cin>>n;for (int i=1;i<=n;i++) scanf("%lld",&a[i]);for (int i=1;i<=n;i++) scanf("%lld",&b[i]);for (int i=1;i<=n;i++) Sum[i]=Sum[i-1]+b[i];a[n+1]=-INF;for (int i=1;i<=n+1;i++) {while (top && a[i]<S[top].val) {int id=S[top].idx;L[id]=S[top-1].idx+1; R[id]=i-1;top--;}top++; S[top].idx=i; S[top].val=a[i];}LL sum=0,Max=0,id=0;for (int i=1;i<=n;i++) {sum+=b[i];Lmin[i]=id+1;if (sum>Max) Max=sum,id=i;}sum=0; Max=0; id=n+1;for (int i=n;i;i--) {sum+=b[i];Rmin[i]=id-1;if (sum>Max) Max=sum,id=i;}LL ans=-INF;for (int i=1;i<=n;i++)if (a[i]>=0) ans=max(ans,a[i]*(Sum[R[i]]-Sum[L[i]-1]));else {LL lm=max(L[i],Lmin[i]),rm=min(R[i],Rmin[i]);ans=max(ans,a[i]*(Sum[rm]-Sum[lm-1]));}cout<<ans<<endl;return 0; }

Problem D?triples I

https://ac.nowcoder.com/acm/contest/884/D

題意:

題解:

C++版本一

#include<bits/stdc++.h> using namespace std; const int N=2e5+7; int main() {int zs;cin>>zs;while(zs--){long long n;vector<int>s,ans,ans2;cin>>n;if(n%3==0) {cout<<1<<' '<<n<<endl;continue;}int d=n%3;while(n){s.push_back(n%2);n/=2;}//for(int i=0;i<s.size();i++)cout<<s[i];cout<<endl;for(int i=0;i<s.size();i++) ans.push_back(0);int f=0,t;for(int i=d-1;i<s.size();i+=2)if(s[i]==1){f=1;s[i]=0;ans[i]=1;break;}//for(int i=0;i<s.size();i++)cout<<s[i];cout<<endl;if(f==1){ f=0;for(int i=d%2;i<s.size();i+=2)if(s[i]==1){ans[i]=1;f=1;break;}if(f==0){int ttt=0;for(int i=d-1;i<s.size();i+=2)if(s[i]==1){ans[i]=1;f=1;ttt++;if(ttt==2)break;}}}else{int ttt=0;for(int i=d%2;i<s.size();i+=2)if(s[i]==1){s[i]=0;ans[i]=1;ttt++;if(ttt==3){s[i]=1;ans[i]=1;break;}}}long long a1=0,a2=0,d1=1,d2=1; //for(int i=0;i<s.size();i++)cout<<s[i];cout<<endl; //for(int i=0;i<ans.size();i++)cout<<ans[i];cout<<endl;for(int i=0;i<s.size();i++){a1+=s[i]*d1;d1*=2;}for(int i=0;i<ans.size();i++){a2+=ans[i]*d2;d2*=2;}cout<<2<<' '<<a1<<' '<<a2<<endl;} }

Problem E?triples II

?

題意:

題解:

C++版本一

?

Problem F?merge

?

題意:

題解:

C++版本一

?

Problem G?tree

?

題意:

題解:

C++版本一

?

Problem H?RNGs

?

題意:

題解:

C++版本一

?

Problem I?string

?

題意:

題解:

C++版本一

?

Problem J?free

https://ac.nowcoder.com/acm/contest/884/J

題意:

題解:

C++版本一

# include <cstdio> # include <iostream> # include <queue> # include <cstring> # define mp make_pair # define R register intusing namespace std;int h,n,m,k,s,t,a,b,c,firs[3009]; struct edge {int co,too,nex; }g[10009]; int d[3009][3009]; bool vis[3009][3009]; typedef pair <int,int> pii; priority_queue <pii,vector<pii>,greater<pii> > q;void add(int x,int y,int co) {g[++h].too=y;g[h].co=co;g[h].nex=firs[x];firs[x]=h; }void dis() {memset(d,127,sizeof(d));d[s][0]=0;q.push(mp(0,s));int beg,j,x;while (q.size()){beg=q.top().second;q.pop();x=beg/n;beg%=n;if(vis[beg][x]) continue;vis[beg][x]=true;for (R i=firs[beg];i;i=g[i].nex){j=g[i].too;if(d[beg][x]+g[i].co<d[j][x]){d[j][x]=d[beg][x]+g[i].co;q.push(mp(d[j][x],j+n*x));}if(x==k) continue;if(d[j][x+1]>d[beg][x]){d[j][x+1]=d[beg][x];q.push(mp(d[j][x+1],j+(x+1)*n));}}} }int main() {scanf("%d%d%d%d%d",&n,&m,&s,&t,&k);for (R i=1;i<=m;++i){scanf("%d%d%d",&a,&b,&c);add(a,b,c);add(b,a,c);}dis();printf("%d\n",d[t][k]);return 0; }

Problem K?number

https://ac.nowcoder.com/acm/contest/884/K

題意:

題解:

C++版本一

#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 7; int sum[maxn], cnt[3]; int main() {string str; cin >> str;int len = str.length();long long ans = 0;int l = 0; int t = 0;cnt[1] = -1; cnt[2] = -1;//while (str[l] == '0') l++;for (int i = l; i < len; i++){sum[i+1] = (sum[i] + (str[i] - '0')) % 3;//cout << "? " <<i<<' '<< sum[i+1] << endl;cnt[sum[i+1]]++;if (str[i] == '0'){t++;if (str[i+1] && str[i+1] == '0') {ans += cnt[sum[i]];//cout << sum[i]<<' '<<cnt[sum[i]] <<" >> "<< ans << endl;}}}cout << ans + t << endl;return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的2019牛客暑期多校训练营(第四场)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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