• Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C D


    C - Equalize

    #include<bits/stdc++.h>
    using namespace std;
    using namespace std;
    string a,b;
    int main(){
      int n;
      cin>>n;
      cin>>a>>b;
      int ans=0,sum=0;
      for(int j=0;j<n;j++){
         if(a[j]!=b[j]) ans++;
      }
      for(int j=0;j<n-1;j++){
          if(a[j]==b[j]) continue;
         if(a[j]=='1'&&a[j+1]=='0'&&b[j]=='0'&&b[j+1]=='1'){
            sum++;
            swap(a[j],a[j+1]);
         }else if(a[j]=='0'&&a[j+1]=='1'&&b[j]=='1'&&b[j+1]=='0'){
            sum++;
            swap(a[j],a[j+1]);
         }
      }
      for(int j=0;j<n;j++){
         if(a[j]!=b[j]) sum++;
      }
      cout<<min(sum,ans)<<endl;
    
      return 0;
    }

    D - Valid BFS?

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 300005
    vector<int>q[maxn];
    int de[maxn],fa[maxn],ff[maxn];
    int a[maxn],vi[maxn],sz[maxn];
    void dfs(int u,int f,int d){
       de[u]=d;
       fa[d]++;
       vi[u]=f;
       for(int j=0;j<q[u].size();j++){
          int v=q[u][j];
          if(v==f) continue;
          sz[u]++;
          dfs(v,u,d+1);
       }
    }
    int main(){
       memset(de,0,sizeof(de));
       memset(fa,0,sizeof(fa));
       memset(vi,0,sizeof(vi));
       memset(sz,0,sizeof(sz));
       memset(ff,0,sizeof(ff));
       int n;
       cin>>n;
       for(int j=1;j<n;j++){
         int u,v;
         cin>>u>>v;
         q[u].push_back(v);
         q[v].push_back(u);
       }
       for(int j=1;j<=n;j++){
          cin>>a[j];
       }
       dfs(1,0,1);
       int l=0;
       sz[0]=1;
       for(int j=1;j<=n;j++){
          int k=de[a[j]];
          while((sz[a[l]]==0)) l++;
          if(fa[k-1]!=0){
             cout<<"No"<<endl;
             return 0;
          }
          if(vi[a[j]]!=a[l]){
             cout<<"No"<<endl;
             return 0;
          }
          if(!ff[a[j]]){
             ff[a[j]]=1;
          }else{
            cout<<"No"<<endl;
            return 0;
          }
          sz[a[l]]--;
          fa[k]--;
       }
       cout<<"Yes"<<endl;
       return 0;
    }
  • 相关阅读:
    BZOJ 2527 Meteors 整体二分
    BZOJ 1176: [Balkan2007]Mokia
    DP杂题2
    点分治
    一些图论模板
    一些字符串的题
    斐波那契+线段树
    BZOJ 2957楼房重建
    POJ
    BZOJ 2002 弹飞绵羊
  • 原文地址:https://www.cnblogs.com/Dvelpro/p/9954576.html
Copyright © 2020-2023  润新知