64分求调
查看原帖
64分求调
1378748
Water__1楼主2024/10/7 01:41
#include<bits/stdc++.h>
using namespace std;
int n,m;
int l[400];//执行顺序 
int jq[25][25];//第i个工件的第j个工序使用的机器号
int ti[25][25];//第i个工件的第j个工序使用的时间 
int idx[25];//进行到第i个工件的第几个工序了 
int idxg[25];//第i个工件的最后完成时间 
int tim[25][400];//第i个机器的第j个时间完成哪个工件 
int maxn=-1;
int main(){
	scanf("%d%d",&m,&n);
	for(int i=1;i<=n*m;i++) scanf("%d",&l[i]);
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) scanf("%d",&jq[i][j]);
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) scanf("%d",&ti[i][j]);
	}
	
	for(int i=1;i<=n*m;i++){
		idx[l[i]]++;
		int q=jq[l[i]][idx[l[i]]],t=ti[l[i]][idx[l[i]]];
		int s=0,j=idxg[l[i]];
		while(s<=t){
			j++;
			if(tim[q][j]==0)s++;
			else{
				s=0;
			}
		}
		for(int k=j-s+1;k<=j-1;k++) tim[q][k]=l[i];
		idxg[l[i]]=j-1;
		maxn=max(maxn,j);
		/*
		for(int i=1;i<=12;i++){
			cout<<tim[1][i];
		}
		cout<<endl;
		for(int i=1;i<=12;i++){
			cout<<tim[2][i];
		}
		cout<<endl<<endl;
		*/
	}
	printf("%d",maxn-1);
	return 0; 
}
2024/10/7 01:41
加载中...