求助,为什么10pts
查看原帖
求助,为什么10pts
697421
Quenna楼主2023/10/20 19:30
#include<bits/stdc++.h>
using namespace std;
int a[100000001],n,m,k,t;
struct node{//函数存储
	vector<int>c;
	int p,v;
	int t;
}f[1000001];
void k_function(int s){//递归式函数处理
	if(f[s].t==1){
		a[f[s].p]+=f[s].v;
		return; 
	}
	if(f[s].t==2){
		for(int i=1;i<=n;i++) a[i]=a[i]*f[s].v%998244353;
		return;
	}
	if(f[s].t==3){
		for(int i=0;i<f[s].c.size();i++){
			k_function(f[s].c[i]);
		}
		return; 
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>t;
		f[i].t=t;
		if(t==1) cin>>f[i].p>>f[i].v;
		if(t==2) cin>>f[i].v;
		if(t==3){
			cin>>t;
			while(t--) cin>>k,f[i].c.push_back(k);
		}
	}
	cin>>t;
	while(t--){
		cin>>m;
		k_function(m); 
	}
	for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}

五 彩 斑 斓

2023/10/20 19:30
加载中...