Lucifero @ 2020-11-16 18:58:11
不会啊,每个样例都过了,虽然不是正解,但起码也能得到一点分吧……
蒟蒻 1h 都花在这上面了,不甘心!!!
#include <bits/stdc++.h>
#define mod 998244353
using namespace std;
int a[200000],T[200000],P[200000],V[200000],g[2000][2000],f,n,m;
void face1(int x,int k)
{
a[x]=(a[x]%mod+k%mod)%mod;
}
void face2(int k)
{
for(register int i=1;i<=n;i++) a[i]=(a[i]%mod*k%mod)%mod;
}
void face3(int u,int v)
{
for(register int i=1;i<=v;i++)
if (T[g[u][i]]==1)
face1(P[g[u][i]],V[g[u][i]]);
else if (T[g[u][i]]==2)
face2(V[g[u][i]]);
else if (T[g[u][i]]==3)
face3(g[u][i],P[g[u][i]]);
}
int main()
{
//函数调用
register bool flag=false;
register int Q,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d",&T[i]);
if (T[i]==1)
{
flag=true;
scanf("%d%d",&P[i],&V[i]);
}
else if (T[i]==2)
{
flag=true;
scanf("%d",&V[i]);
}
else if (T[i]==3)
{
scanf("%d",&P[i]);
for(j=1;j<=P[i];j++) scanf("%d",&g[i][j]);
}
}
if (!flag)
{
printf("%d ",a[i]%mod);
return 0;
}
scanf("%d",&Q);
for(i=1;i<=Q;i++)
{
scanf("%d",&f);
if (T[f]==1)
face1(P[f],V[f]);
else if (T[f]==2)
face2(V[f]);
else if (T[f]==3)
face3(f,P[f]);
}
for(i=1;i<=n;i++) printf("%d ",a[i]%mod);
printf("\n");
return 0;
}
by BADFIVE @ 2020-11-16 19:02:00
虽然我不会,但是先%再说,%%%,tql,orzzz
by Lucifero @ 2020-11-16 19:02:23
az