一大坨代码,80分 求修改
查看原帖
一大坨代码,80分 求修改
517637
瀛洲仙子楼主2024/1/24 21:58

没用结构体(

#include<bits/stdc++.h>
using namespace std;
int seq[410];
int tim[25][25];
int mach[25][25];
int attr[25][8100];
int cnt[25];int n,m;
int found(int ma,int go)
{
    int ret;
    for(ret=8080;attr[ma][ret]!=go and ret>0;--ret);
    return ret;
}
vector<pair<int,int> >query(int mac,int st)
{
    vector<pair<int,int> >ret;
    for(int i=st;i<=8080;)
        if(!attr[mac][i])
        {
            int j=i;
            while(!attr[mac][j] and j<=8080)++j;
            ret.push_back(make_pair(i,j));i=j+1;
        }
        else++i;
    return ret;
}
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    cin>>m>>n;
    for(int i=1;i<=m*n;++i)
        cin>>seq[i];
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            cin>>mach[i][j];
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            cin>>tim[i][j];
    for(int i=1;i<=m*n;++i)
    {
        ++cnt[seq[i]];
        int last=mach[seq[i]][cnt[seq[i]]-1];
        int lstime;if(cnt[seq[i]]==1)lstime=0;
        else lstime=found(last,seq[i]);
        vector<pair<int,int> >seg=query(mach[seq[i]][cnt[seq[i]]],lstime+1);
        for(int j=0;j<seg.size();++j)
        {
            if(seg[j].second-seg[j].first+1>=tim[seq[i]][cnt[seq[i]]])
            {
                for(int k=1;k<=tim[seq[i]][cnt[seq[i]]];++k)
                    attr[mach[seq[i]][cnt[seq[i]]]][seg[j].first+k-1]=seq[i];
                break;
            }
        }
    }
    for(int time=8080;time>0;--time)
    {
        for(int i=1;i<=m;++i)
            if(attr[i][time])
            {cout<<time;return 0;}
    }
    return 0;
}
2024/1/24 21:58
加载中...