本文主要是介绍codeforces round 875 div2(a,b,c),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
正常难度
A
#include<bits/stdc++.h>using namespace std;#define ing long longvoid solve()
{int n;cin>>n;vector<int>a(n+1);for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){cout<<abs(n+1-a[i])<<' ';}cout<<'\n';
}signed main()
{ios::sync_with_stdio(),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--){solve();}return 0;
}
B
#include<bits/stdc++.h>using namespace std;#define int long longvoid solve()
{int n;cin>>n;vector<int>a(n+1),b(n+1);for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)cin>>b[i];vector<int>mp(2*n+1,0);for(int i=1;i<=n;i++){int ans=1;while(a[i]==a[i+1]&&i<n)ans++,i++;mp[a[i]]=max(mp[a[i]],ans);}vector<int>m(2*n+1,0);for(int i=1;i<=n;i++){int ans=1;while(b[i]==b[i+1]&&i<n)ans++,i++;m[b[i]]=max(m[b[i]],ans);}int out=-1;for(int i=1;i<=2*n;i++){out=max(out,mp[i]+m[i]);}cout<<out<<'\n';
}signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--){solve();}return 0;
}
C
题目大意
给定 n n n个节点的树,有 n − 1 n-1 n−1对描述,每对描述为两个链接的节点,一个节点被加入树当且仅当与他链接的节点已经在树上时。
有 m m m轮访问,每轮访问所有描述,请你确认形成完整树的最小 m m m
思路
搜索
正向模拟建树会 T T T掉,反向检查
广搜,用队列存节点信息,遍历,若某点的序号比父节点链接的边的序号小,则证明要多一层循环,插入循环次数加 1 1 1即可
ACcode
#include<bits/stdc++.h>using namespace std;#define int long long
#define PII pair<int,int>struct node{int x,y,z;};void solve()
{int n;cin>>n;vector<vector<PII> >a(n+1);for(int i=1;i<n;i++){int l,r;cin>>l>>r;a[l].push_back({r,i});a[r].push_back({l,i});}int ans=1;queue<node>mq;vector<int>vis(n+1,0);mq.push({1,0,1});while(!mq.empty()){auto [x,y,z]=mq.front();mq.pop();if(vis[x])continue;vis[x]=1;ans=max(ans,z);for(auto [p,q]:a[x]){if(q<y)mq.push({p,q,z+1});else mq.push({p,q,z});}}cout<<ans<<'\n';
}signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--){solve();}return 0;
}
这篇关于codeforces round 875 div2(a,b,c)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!