2 条题解

  • 0
    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e4+10;
    string tr[20],s;
    int n,a[N],p;
    bool Power(int n)
    {
        if(n<=1)return 0;
        return (n&(n-1))==0;
    }
    int main()
    {
    	cin>>n>>s;
    	for(int i=0;i<s.size();++i)
    	{
    		cout<<(s[i]=='0'?'B':'I');
    		if(s[i]=='0')tr[0]+="B";
    		if(s[i]=='1')tr[0]+="I";
    		for(int j=0;j<=n;++j)
    		{
    			if(tr[j].size()>=2)
    			{
    				if(tr[j][0]==tr[j][1] && tr[j][0]!='F')tr[j+1]+=tr[j][0];
    				else tr[j+1]+="F";
    				cout<<tr[j+1][tr[j+1].size()-1];
    				if(j+1==n)return 0;
    				tr[j]="";
    			}
    			else
    			{
    				break;
    			}
    		}
    	}
    	return 0;
    }
    
    • 0
      @ 2023-10-15 11:40:11
      #include <iostream>
      using namespace std;
      int n;
      char s[1<<20];
      char type  [1<<20];
      void dfs(int x){
      	if(x>=(1<<n)){
      		if(s[x]=='1'){
      			type[x]='I';
      		}
      		else{
      			type[x]='B';
      		}
      		cout<<type[x];
      		return;
      	}
      	dfs(2*x);
      	dfs(2*x+1);
      	if(type[2*x]==type[2*x+1]){
      		type[x]=type[2*x];
      	}
      	else{
      		type[x]='F';
      	}
      	cout<<type[x];
      }
      int main(){
      	cin>>n;
      	for(int i=(1<<n);i<(1<<(n+1));i++){
      		cin>>s[i];
      	}
      	dfs(1);
      	return 0;
      }
      
      • 1

      信息

      ID
      672
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      递交数
      105
      已通过
      37
      上传者