萌新求问爆栈 看代码注释的那一行
  • 板块学术版
  • 楼主xiaoliebao1115
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/12 22:44
  • 上次更新2024/11/13 05:37:19
查看原帖
萌新求问爆栈 看代码注释的那一行
701387
xiaoliebao1115楼主2024/11/12 22:44
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mzhxi=-1e18;
int n,m,t,c[51],cnt,id[51][6];
struct matrix{
	int sz,a[251][251];
	matrix(){
		for(int i=1;i<=250;i++){
			for(int j=1;j<=250;j++) a[i][j]=mzhxi;
		}
		sz=0;
	}
};
matrix trans,pw[30];
inline matrix mul(matrix x,matrix y){
	matrix z;
	z.sz=x.sz;
	for(int i=1;i<=x.sz;i++){
		for(int j=1;j<=x.sz;j++){
			for(int k=1;k<=x.sz;k++){
				if(x.a[i][k]==mzhxi||y.a[k][j]==mzhxi) continue;
				z.a[i][j]=max(z.a[i][j],x.a[i][k]+y.a[k][j]);
			}
		}
	}
	return z;
}
inline matrix mul2(matrix a,int mi){
	for(int bit=0;bit<=29;bit++){
		if((mi>>bit)&1){
			matrix res;
			res.sz=a.sz;
			for(int j=1;j<=a.sz;j++){
				for(int k=1;k<=a.sz;k++){
					if(a.a[1][k]==mzhxi||pw[bit].a[k][j]==mzhxi) continue;
					res.a[1][j]=max(res.a[1][j],a.a[1][k]+pw[bit].a[k][j]);
				}
			}
			a=res;
		}
	}
	return a;
}
struct node{
	int t,u,w;
};
node x[201];
inline bool cmp(node l1,node l2){
	return l1.t<l2.t;
}
int k;
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>m>>t>>k;
	for(int i=1;i<=n;i++) cin>>c[i];
	trans.sz=n*5;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=5;j++) id[i][j]=++cnt;
		for(int j=1;j<5;j++) trans.a[id[i][j]][id[i][j+1]]=0;
	}
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		trans.a[id[u][w]][id[v][1]]=c[v];
	}
	for(int i=1;i<=k;i++) cin>>x[i].t>>x[i].u>>x[i].w;
	sort(x+1,x+k+1,cmp);
	pw[0]=trans;
	for(int i=1;i<=29;i++) pw[i]=mul(pw[i-1],pw[i-1]);
	matrix base;//这一份代码提交上去会AC,但是本地RE,这空间也不大吧,这是爆栈的问题吗?
	base.sz=n*5;
	base.a[1][1]=c[1];
	int lt=0;
	for(int i=1;i<=k;i++){
		base=mul2(base,x[i].t-lt);
		if(base.a[1][id[x[i].u][1]]!=mzhxi) base.a[1][id[x[i].u][1]]+=x[i].w;
		lt=x[i].t;
	}
	if(lt!=t) base=mul2(base,t-lt);
	if(base.a[1][1]==mzhxi) cout<<-1<<endl;
	else cout<<base.a[1][1]<<endl;
	return 0;
}

另外这个和我这个情况一样吗?

2024/11/12 22:44
加载中...