首页 > 其他分享 >Codeforces Round 862 (Div. 2) A-D

Codeforces Round 862 (Div. 2) A-D

时间:2023-05-22 13:02:36浏览次数:55  
标签:begin No int 862 Codeforces dfs ans Div d1

Codeforces Round 862 (Div. 2)

 

A. We Need the Zero 

int a[N];
void solve(){
    int n=read(),sum;
    for(int i=1;i<=n;i++){
        a[i]=read();
        if(i==1)sum=a[i];
        else sum^=a[i];
    }
    if(n%2)cout<<sum<<'\n';
    else if(sum==0)cout<<1<<'\n';
    else cout<<-1<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

B. The String Has a Target

void solve(){
    int n=read();
    string s;
    cin>>s;
    int ans=0;
    for(int i=1;i<n;i++){
        if(s[i]<=s[ans]){
            ans=i;
        }
    }
    cout<<s[ans];
    for(int i=0;i<ans;i++){
        cout<<s[i];
    }
    for(int i=ans+1;i<n;i++){
        cout<<s[i];
    }
    cout<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

C. Place for a Selfie

int a[N];
bool check(double ranl,double ranr , int x) {
       if(ranl<a[x] && a[x]<ranr){
        return true;
       }else return false;
 }
int bs1(double ranl,double ranr, int l, int r){ //左偏二分
    while (l < r){
        int mid = l + r >> 1;
        if (ranl<a[mid]&&a[mid]<ranr) return mid; 
        else if(ranr<=a[mid])r=mid;  
        else l = mid + 1;
    }
    return l;
}
void solve(){
    int n=read(),m=read();
    for(int i=1;i<=n;i++)a[i]=read();
    sort(a+1,a+1+n);
    for(int i=1;i<=m;i++){
        int aa=read(),b=read(),c=read();
        double ranl=b-sqrt(4*aa*c);
        double ranr=b+sqrt(4*aa*c);
        // cout<<ran<<'\n';
        int poi=bs1(ranl,ranr,1,n);
        if(ranl<a[poi] && a[poi]<ranr){
            cout<<"YES\n";
            cout<<a[poi]<<'\n';
        }else cout<<"NO\n";
    }
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

D. A Wide, Wide Graph

首先直径的两个端点是最容易连起来的一条边 如果k大于等于直径必然答案为n

如果k的值小于直径 那么只要判断每个点接入直径的的端点的长度是否大于k

确实比较简单(*1800) 树上直径就没什么内容了 但是我的树真的是yi‘tuo

vector<int>g[N];
void dfs(int v,int par,int h,vector<int> &d){
    d[v]=h;
    for(int i:g[v]){
        if(i!=par){
            dfs(i,v,h+1,d);
        }
    }
}
void solve(){
    int n=read();
    for(int i=1;i<n;i++){
        int x=read()-1,y=read()-1;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    vector<int>d1(n),d2(n);
    dfs(0,-1,0,d1);
    int a=max_element(d1.begin(),d1.end())-d1.begin();  //得到深度最大的点a
    dfs(a,-1,0,d1);
    int b=max_element(d1.begin(),d1.end())-d1.begin();  //计算每个点到a点的距离 记录距离a点最远的b点
    dfs(b,-1,0,d2);                              //计算每个点到b点的距离
    for(int i=0;i<n;i++){                       
        d2[i]=max(d2[i],d1[i]);                    //计算每个点到直径端点的最长路径
    }
    sort(d2.begin(),d2.end());
    int ans=0;
    for(int i=1;i<=n;i++){
        while(ans<n&&d2[ans]<i){
            ans++;
        }
        cout<<min(n,ans+1)<<" ";
    }
    cout<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

 

标签:begin,No,int,862,Codeforces,dfs,ans,Div,d1
From: https://www.cnblogs.com/edgrass/p/17420336.html

相关文章

  • Codeforces Round 874 (Div. 3) A-G
    比赛地址A.MusicalPuzzle题意:给出一个字符串,求有多少个不同的长度为2的子串Solution直接set存即可voidsolve(){ intn;cin>>n; strings;cin>>s; set<string>st; for(inti=0;i<n-1;i++) { st.insert(s.substr(i,2)); } cout<<st.size()<<"\n"......
  • Codeforces Round 874 (Div. 3)
    A.MusicalPuzzle题意:用最少的长度为2的字符串按一定规则拼出s。规则是:前一个字符串的尾与后一个字符串的首相同。分析:统计s中长度为2的不同字符串数量。代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e5;intmain(){......
  • CodeForces1061C Multiplicity
    题面翻译从序列\(\{a_1,\a_2,\..\,\a_n\}\)中选出非空子序列\(\{b_1,\b_2,\..\,\b_k\}\),一个子序列合法需要满足\(\forall\i\in[1,\k],\i\|\b_i\)。求有多少互不相等的合法子序列,答案对\(10^9+7\)取模。序列\(\{1,\1\}\)有\(2\)种选法得到子序列\(......
  • Codeforces 874 div3 (A-G)
    Codeforces874div3A题意计算每两个相邻字符的不同种类B题意重排一个数组b,使得\(|a_i-b_i|\leqk\)思路根据相对大小去一一对应,这样每个位置的绝对值最小,数据保证有解代码voidsolve(){ cin>>n>>k; for(inti=1;i<=n;i++)cin>>a[i].first,a[i].second=i; for(in......
  • 【vue】div标签和template标签使用区别
       ......
  • 【做题记录】CodeForces343D Water Tree
    题面翻译给出一棵以\(1\)为根节点的\(n\)个节点的有根树。每个点有一个权值,初始为\(0\)。\(m\)次操作。操作有\(3\)种:将点\(u\)和其子树上的所有节点的权值改为\(1\)。将点\(u\)到\(1\)的路径上的所有节点的权值改为\(0\)。询问点\(u\)的权值。\(1\le......
  • Codeforces 1832F - Zombies(wqs 二分)
    等价于最大化\(n\)对区间的交集之和。而对于每个\([l_i,r_i)\)我们肯定会选择与其交集最大的\([p,p+m)\)与之匹配,所以我们只用对\(k\)个区间进行决策即可。首先先发现一个东西:存在一种最优解,使得对于每个选择的区间\([p,p+m)\),要么有\(p=l_i\),要么有\(p+m=r_i\),也就是......
  • Codeforces Round 873 (Div. 2)
    Preface补题,这场本来周日晚上打算现场打的但一来第二天要上课怕熬太晚影响早上的微积分和电分,二来那天晚上开了DP专题然后就在手速抢一血过程中被两道DFS搞红温了,本来打CF的计划也咕咕咕了今天差不多想起来好久没做CF了赶紧补一场看了下自己补题的时候2h也才堪堪做完D1,虽然后......
  • Codeforces Round 703 (Div. 2) A-D
    CodeforcesRound703(Div.2) A.ShiftingStacksinta[N];voidsolve(){intn=read(),ans=1;for(inti=1;i<=n;i++)a[i]=read();intrest=0,last=-1;for(inti=1;i<=n;i++){a[i]+=rest;rest=a[i]-last-1;last++......
  • Codeforces Round 868 (Div. 2) A-D
    CodeforcesRound868(Div.2) A.A-characteristicintfac[N];map<int,int>mp;voidinit(){fac[1]=0;mp[0]=1;for(inti=2;i<N;i++){fac[i]=fac[i-1]+(i-1);mp[fac[i]]=i;}}voidsolve(){intn=read(),k=rea......