题解
2023-08-25 12:59:50
发布于:广东
3阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const int N = 25;
const int T = 100010;
struct info
{
int id;
int cost;
};
int workList[410];
info wp[N][N];
int mac[N][T];
int step[N];
int lastTime[N];
int ans;
int m,n;
int main()
{
cin >> m >> n;
for(int i = 0 ; i < m * n ; i++)
cin >> workList[i];
for(int i = 0 ; i < n ; i++)
for(int j = 0 ; j < m ; j++)
cin >> wp[i][j].id;
for(int i = 0 ; i < n ; i++)
for(int j = 0 ; j < m ; j++)
cin >> wp[i][j].cost;
for(int i = 0 ; i < m * n ; i++)
{
int now = workList[i] - 1;
int id = wp[now][step[now]].id;
int cost = wp[now][step[now]].cost;
int s = 0;
for(int j = lastTime[now] + 1 ; j < T ; j++)
{
if(!mac[id][j])
s++;
else
s = 0;
if(s == cost)
{
for(int k = j - cost + 1 ; k <= j ; k++)
mac[id][k] = 1;
ans = max(ans,j);
lastTime[now] = j;
break;
}
}
step[now]++;
}
cout << ans;
return 0;
}
这里空空如也
有帮助,赞一个