70分求助,7、8、9测试点过不了,结果有偏差,但其他的都能过
查看原帖
70分求助,7、8、9测试点过不了,结果有偏差,但其他的都能过
613172
mianm楼主2022/1/28 17:32
#include<iostream>
using namespace std;
int state[20][1000000] = { 0 };//机器状态
int m, n, order[401], step[20] = { 0 }, last_time[21] = { 0 };
int main()
{
	cin >> m >> n;
	struct info
	{
		int id;
		int cost;
	}a[20][20];//工件 工序
	for (int i = 0;i < m * n;i++)
		cin >> order[i];//顺序
	for (int i = 1;i < n+1;i++)
		for (int j = 0;j < m;j++)
			cin >> a[i][j].id;
	for (int i = 1;i < n+1;i++)
		for (int j = 0;j < m;j++)
			cin >> a[i][j].cost;
	for (int i = 0;i<m*n;i++)
	{
		int s = 0;
		for (;;)
		{
			int j = last_time[order[i]];
			last_time[order[i]]++;
			if (state[a[order[i]][step[order[i]]].id][j] == 0)
			{
				state[a[order[i]][step[order[i]]].id][j] = 1;
				s++;
			}
			else s = 0;
			if (s == a[order[i]][step[order[i]]].cost)
			{
				step[order[i]]++;
				break;
			}
		}
	}
	for (int i = 1;i < n+1;i++)
		if (last_time[i] > last_time[0])
			last_time[0] = last_time[i];
	cout << last_time[0] << endl;
	return 0;
}
2022/1/28 17:32
加载中...