百度生草翻译机翻译代码
  • 板块灌水区
  • 楼主天南星魔芋
  • 当前回复15
  • 已保存回复15
  • 发布时间2020/10/23 15:40
  • 上次更新2023/11/5 10:06:43
查看原帖
百度生草翻译机翻译代码
399239
天南星魔芋楼主2020/10/23 15:40

这是源码

#include<bits/stdc++.h>
using namespace std;

long long n;
long long fir[500005],nxt[500005],to[500005],qtop=0;//
char nn[500005];//
long long ans[500005];// 
long long cun[500005];//
 
void add(long long x,long long y){
	qtop++,nxt[qtop]=fir[x],fir[x]=qtop,to[qtop]=y;
}

void dfs(long long x,long long v,long long a,long long b,long long c,long long d){
	long long pd=0;////////
	long long ppd=0;////// 
	long long qq;//////// 
	
	if(nn[x]=='('){
		if(c==0)b++;// 
		else d++;
		}
	else {
		
		if(d>0){/
			d--;
			if(d==0){//d==0,
				c++;
				v+=c;
			}else{//d!=0
				cun[b]=c,ppd=b;//////////////////////////
				
				//cout<<"  "<<cun[b]<<"   "<<b<<endl;
				b+=d;
				d=0;
				c=1;
				v++;
			}
		}
		
		else if(b>0){
			b--;
			c=1;
			v++;
			if(cun[b]!=0)v+=cun[b],c+=cun[b],pd=cun[b],cun[b]=0,qq=b;

			else if(b==0){//
				v+=a*c;
				a+=c;
				c=0;
			}
		}else a=0,b=0,c=0,d=0;
	}
	
	//////////////////////////////////////
		ans[x]=v;                   /////
		for(long long i=fir[x];i;i=nxt[i]){///  dfs
			dfs(to[i],v,a,b,c,d);   ///
		}                          ///
	/////////////////////////////////	
		if(pd!=0){               ///
			cun[qq]=pd;         ///
		}                      //
			cun[ppd]=0;      ///
		}                   ///
	//////////////////////////	
	return ;
}
int main(){
	//freopen("brackets.in","r",stdin);
	//freopen("brackets.out","w",stdout);
	
	memset(fir,0,sizeof(fir));

	cin>>n;
	long long fa;

	for(long long i=0;i<=n;i++){
		scanf("%c",&nn[i]);
	}

	for(long long i=2;i<=n;i++){
		scanf("%lld",&fa);
		add(fa,i);
	}

	dfs(1,0,0,0,0,0);

	long long scans=ans[1];
	for(long long i=2;i<=n;i++){
		scans=scans^(ans[i]*i);
		//cout<<ans[i]<<endl
	}
	cout<<scans<<endl;
}

这是翻译后

#包括<bits/stdc++.h>
使用名称空间std;
长-长n;
长杉木[500005],nxt[500005],至[500005],qtop=0//
字符nn[500005]//
龙龙安讯[500005]//
龙龙村[500005]//
空白添加(长x,长y){
qtop++,nxt[qtop]=fir[x],fir[x]=qtop,to[qtop]=y;
}
无效dfs(long long x,long long v,long long a,long long b,long long c,long long d)无效dfs{
长-长pd=0////////
长ppd=0//////
长龙qq////////
如果(nn[x]='('){
如果(c==0)b++//
其他d++;
}
其他{
如果(d>0){/
d--;
如果(d==0){//d==0,
c++语言;
v+=c+;
}否则{//d!=0
cun[b]=c,ppd=b//////////////////////////
//可<<“<<村[b]<<”<<b<<endl;
b+=d;
d=0;
c=1;
v++;
}
}
否则,如果(b>0){
b--;
c=1;
v++;
如果(村[b]!=0)v+=村[b],c+=村[b],pd=村[b],村[b]=0,qq=b;
否则如果(b==0){//c前进a
v+=交流电;
a+=c;
c=0;
}
}否则a=0,b=0,c=0,d=0;
}
//////////////////////////////////////
ans[x]=v/////
for(long long i=fir[x];i;i=nxt[i]){///dfs
dfs(至[i],v,a,b,c,d)///
}                          ///
/////////////////////////////////
如果(警察!=0){///
村[qq]=pd///
}                      //
寸[ppd]=0///
}                   ///
//////////////////////////
返回;
}
内部主(){
//打开(“括号.in“,”r“,标准输入法);
//弗罗恩(“方括号.out“,”w“,标准输出);
memset(fir,0,sizeof(fir));
cin>>n;
长隆发;
for(long long i=0;i<=n;i++){
scanf(“%c”,&amp;nn[i]);
}
for(long long i=2;i<=n;i++){
scanf(“%lld”,&amp;fa);
加(fa,i);
}
dfs(1,0,0,0,0,0);
长时间扫描=ans[1];
for(long long i=2;i<=n;i++){
scans=扫描^(ans[i]*i);
//不能
}
扫描扫描;
}
2020/10/23 15:40
加载中...