首页 > 其他分享 >Codeforces Round 875 (Div. 2)

Codeforces Round 875 (Div. 2)

时间:2023-07-14 19:45:34浏览次数:45  
标签:typedef const int 875 Codeforces long mmp solve Div

Codeforces Round 875 (Div. 2)

A - Twin Permutations

思路:让序列全相等为n+1即可

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=2e5+5,INF=0x3f3f3f3f,Mod=1e9+7;

const double eps=1e-6;
typedef long long ll;
//#define int long long



void solve(){
    int n;cin>>n;
    for(int i=1,x;i<=n;++i){
        cin>>x;
        cout<<1+n-x<<' ';
    }cout<<'\n';
}
int32_t main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

B - Array merging

思路:分别求序列中最长连续长度,不同序列中相同数字的可以相加

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=2e5+5,INF=0x3f3f3f3f,Mod=1e9+7;

const double eps=1e-6;
typedef long long ll;
//#define int long long



void solve(){
    int n;cin>>n;
    map<int,int>mp,mmp;
    for(int i=1,x,l,c=1;i<=n;++i){
        cin>>x;
        if(i==1)l=x;
        else if(l!=x)mp[l]=max(mp[l],c),c=1,l=x;
        else c++;
        if(i==n)mp[l]=max(mp[l],c);
    }
    for(int i=1,x,l,c=1;i<=n;++i){
        cin>>x;
        if(i==1)l=x;
        else if(l!=x)mmp[l]=max(mmp[l],c),c=1,l=x;
        else c++;
        if(i==n)mmp[l]=max(mmp[l],c);
    }
    int ma=0;
    for(auto v:mp){
        ma=max(ma,v.second+mmp[v.first]);
    }
    for(auto v:mmp){
        ma=max(ma,v.second+mp[v.first]);
    }
    cout<<ma<<'\n';
}
int32_t main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

C - Copil Copac Draws Trees

思路:dfs或bfs或dp。从1开始,遍历每条边w,若当前边在w前,则w与当前边在同一次得到;若当前边在w后,则w在当前边的下一次得到

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=5e5+5,INF=0x3f3f3f3f,Mod=1e9+7;
//#define endl '\n'
const double eps=1e-6;
typedef long long ll;
//#define int long long


void solve(){
    int n,ans=1;cin>>n;
    vector<PII>ve[n+1];
    vector<bool>st(n+1,false);
    for(int i=0,u,v;i<n-1;++i){
        cin>>u>>v;
        ve[u].push_back({v,i});
        ve[v].push_back({u,i});
    }
    function<void(int,int,int)> dfs=[&](int u,int pos,int feet){
        for(auto v:ve[u]){
            if(st[v.first])continue;
            st[v.first]=true;
            if(v.second<pos){
                ans=max(ans,feet+1);
                dfs(v.first,v.second,feet+1);
            }else{
                ans=max(ans,feet);
                dfs(v.first,v.second,feet);
            }
        }
    };
    st[1]=true;
    dfs(1,0,1);
    cout<<ans<<'\n';
}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=5e5+5,INF=0x3f3f3f3f,Mod=1e9+7;
//#define endl '\n'
const double eps=1e-6;
typedef long long ll;
//#define int long long


void solve(){
    int n,ans=1;cin>>n;
    vector<PII>dp(n+1,{0,0}),ve[n+1];
    vector<bool>st(n+1,false);
    int p=-1;
    for(int i=1,u,v;i<n;++i){
        cin>>u>>v;
        if(u==1&&p==-1)p=i;
        if(v==1&&p==-1)p=i;
        ve[u].push_back({v,i});
        ve[v].push_back({u,i});
    }
    st[1]=true;dp[1]={1,p};
    queue<int>q;
    q.push(1);
    while(q.size()){
        int u=q.front();q.pop();
        for(auto v:ve[u]){
            if(st[v.first])continue;
            st[v.first]=true;
            q.push(v.first);
            if(v.second<dp[u].second){
                dp[v.first].first=dp[u].first+1,dp[v.first].second=v.second;
                ans=max(ans,dp[v.first].first);
            }
            else{
                dp[v.first].first=dp[u].first,dp[v.first].second=v.second;
                ans=max(ans,dp[v.first].first);
            }
        }
    }
    cout<<ans<<'\n';
}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

标签:typedef,const,int,875,Codeforces,long,mmp,solve,Div
From: https://www.cnblogs.com/bible-/p/17441714.html

相关文章

  • Codeforces Round 884 (Div. 1 + Div. 2)
    CodeforcesRound884(Div.1+Div.2) A-SubtractionGame思路:显而易见为a+b#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>PII;typedefpair<string,int>PSI;typedefpair<string,string>PSS;c......
  • Atcoder Regular Contest 114 F - Permutation Division
    显然分成\(k\)段以后,最大化形成的排列的字典序的策略是将所有段按第一个元素的大小降序排列。由于最终排列的字典序肯定\(\ge\)原排列的字典序,因此我们考虑最大化最终排列与原排列的LCP,这部分就考虑二分答案,记\(dp_i\)表示以\(p_1\)开始\(p_i\)结尾的LDS的长度,那么......
  • 教你快速掌握两个div在同一行显示css如何实现
    我们都知道div是一个块元素,块元素的特点是,独占一行,从上往下排列,但是有时候我们在页面排版的时候需要从左往右横着排列,想要实现这样的效果方法有很多,首先先来看一下,默认情况下的2个div的效果如下代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF......
  • Codeforces 1396E - Distance Matching
    先考虑一下合法的\(k\)的上界和下界是什么以及如何达到上界和下界,我们找出树的一个重心\(R\)并以\(R\)为根dfs一遍整棵树,那么:下界为\(\sum(siz_i\bmod2)\),构造方法是从下往上钦定,对于一个点考虑其所有没有匹配的儿子,如果是偶数个就将它们两两匹配,如果是奇数个就将它们......
  • Codeforces 1740H - MEX Tree Manipulation
    首先发现一个性质,那就是每个点的点权是\(\logn\)级别的。因为假设要造出一个点权为\(i\)的点至少需要大小为\(mn_i\)的子树,那么显然有\(mn_i=\sum\limits_{j=0}^{i-1}mn_j+1\),即\(mn_i=2^i\)。由于点权不是很大,因此我们很容易地往变换复合的角度思考。将整棵树进行轻重......
  • 2--DIV CSS基础
    1.DIVCSS样式CSS指的是层叠样式表(CascadingStyleSheets),也称级联样式表,是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS描述了如何在屏幕、纸张或其他媒体上显示HTML元素,可以同时控制多张网页的布局。DIV是HTML的一......
  • Codeforces Round #882 (Div. 2) A-D
    比赛链接A代码#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;inta[107];intf[107];boolsolve(){intn,k;cin>>n>>k;for(inti=1;i<=n;i++)cin>>a[i];for(inti=1;i<=n-1;......
  • codeforces1283F
    题目链接sol:根一定是第一个,然后不太会,去看了洛谷题解题解#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefpair<int,int>pii;#definefifirst#definesesecond#definefz1(i,n)for((i)=1;(i)<=(n);(i)++)#definefd1(i,n)for((i)......
  • Educational Codeforces Round 151 (Rated for Div. 2)
    D.RatingSystem题目大意玩家的初始积分为0,该玩家连续进行\(n\)场比赛,每场比赛可升高或降低玩家的积分(\(a_i\))。你可以设置一个\(k\)值,比赛过程中玩家的积分不会低于\(k\)(若有一场比赛会使玩家的积分低于\(k\),比赛后玩家的积分会被强制变为\(k\))。找到一个\(k\),使经过\(n\)......
  • codeforces1311E
    题目链接sol:先建一条链,然后把下面的点一个个往上面移,优先移到最上面,如果上面满了就往下一层,知道刚刚好凑满距离,如果最后不能移了就说明不能凑出给定的距离#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefpair<int,int>pii;#definefifir......