70分求助,数据#1答案7200,我跑出来7220,怎么办啊
查看原帖
70分求助,数据#1答案7200,我跑出来7220,怎么办啊
672519
Bing_zhou楼主2022/2/15 16:49
#include <bits/stdc++.h>
using namespace std;
//工件
struct g{
    int id;
    int j[25];
    int t[25];
    int k=1;
    int lt=0;
}a[25];
//机器
struct p{
    int id;
    int t[10000]={0};
}b[25];
int main(){
    int m,n;
    cin>>m>>n;
    int xu[405];
    int max=0;
    for(int i=1;i<=n*m;++i)cin>>xu[i];

    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            cin>>a[i].j[j];
            //cout<<a[xu[i]].j[j];
            }
    }
    //cout<<endl;
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            cin>>a[i].t[j];
            //cout<<a[xu[i]].t[j];
            }
    }
    //输入完毕
    int l=n*m;
    for(int i=1;i<=l;++i){
        //a[xu[i]]的工件
        //找空b[a[xu[i]].b[k]]
        //   k!!!
        int aa=xu[i];
        int bb=a[aa].j[a[aa].k];
        ///cout<<aa<<" "<<bb<<endl;
        int s=0;
        int tt=0;
        int ss=0;
        for(int j=a[aa].lt;;++j){//j是机器的时间段
            if(ss==0)s=j;
            ss=1;
            if(b[bb].t[j]==0){
                tt=j-s;
            }
            else s=j;
            ///cout<<j<<" "<<tt<<endl;
            if(a[aa].t[a[aa].k]==tt)//找到空位
            {
                for(int k=s;k<=j;++k)b[bb].t[k]=1;
                a[aa].lt=j;
                a[aa].k++;
                if(j>max)max=j;
                //cout<<"break"<<endl;
                break;
            }
        }
    }
    cout<<max;
    return 0;
} 
2022/2/15 16:49
加载中...