65pts TLE 玄关求调
查看原帖
65pts TLE 玄关求调
1190741
Violet_Evergardon楼主2024/8/30 15:02

时间复杂度和题解一样是kn^2(至少我觉得),不知道哪里慢了

#include<iostream>
using namespace std;
int n,m,k,d[1005],last[1005];
struct people{
	int t,a,b;
}p[10005];
int js()
{
	int time=0,get[1005],leave[1005];
	get[1]=0;leave[1]=last[1];
	for(int i=2;i<=n;i++)
	{
		get[i]=leave[i-1]+d[i-1];
		leave[i]=max(get[i],last[i]);	
	}
	for(int i=1;i<=m;i++)
	{
		time+=get[p[i].b]-p[i].t;
	}
	return time;
}//             				ok
int main()
{
	cin>>n>>m>>k;
	for(int i=1;i<n;i++)
		cin>>d[i];
	for(int i=1;i<=m;i++)
	{
		cin>>p[i].t>>p[i].a>>p[i].b;
		last[p[i].a]=max(last[p[i].a],p[i].t);
	}
	
	int maxn,mintime;
	for(int i=1;i<=k;i++)
	{
		maxn=1,mintime=1000000000;
		for(int j=1;j<n;j++)
		{
			if(d[j]==0)	continue;
			d[j]-=1;
			int b=js();
			d[j]+=1;
			if(b<mintime) maxn=j,mintime=b;
		}	
		d[maxn]--;
	}
	cout<<mintime;
	
	
	return 0;
}
2024/8/30 15:02
加载中...