202203-3 计算资源调度器(50分代码)

题目链接
里面定义的一些量是没有用到的

#include 
#include 

using namespace std;

//计算节点的结构体
struct Node{
    int id;//节点编号
    int belong;//属于哪个可用区
    int tasknum;//这个计算节点的计算任务数目
    map<int,bool> mpapp;//是否有某个应用的计算任务
    Node(){
        tasknum=0;
    }
};
map<int,vector<Node> > mp;//某个可用区包含的节点
bool cmp(Node a,Node b){
    if(a.tasknum==b.tasknum){
        return a.id < b.id;
    }else{
        return a.tasknum<b.tasknum;
    }
}
int main()
{
    int n,m;//n 计算节点数目,m 可用区数目
    cin >> n >> m;
    vector<Node> nodes(n+1);
    for(int i=1;i<=n;i++){
        int ll;
        cin >> ll;
        nodes[i].id=i;
        nodes[i].belong = ll;
        //cout << "ddd";
        if(mp.find(ll)==mp.end()){
            //cout << "sss";
            vector<Node> tmp;
            tmp.push_back(nodes[i]);
            mp[ll]=tmp;
        }else{
           // cout << "swrv";
            mp[ll].push_back(nodes[i]);
        }

    }
   // cout << "%%%";
    int g;
    cin >> g;
    int f,a,na,pa,paa,paar;
    for(int i=0;i<g;i++){
        cin >> f >> a >> na >> pa >> paa >> paar;
        int limit=0;
        if(na>0){
            limit=mp[na].size();
            if(limit==0){
                for(int j=0;j<f;j++){
                    cout << "0 ";
                }
                cout << endl;
                continue;
            }
            for(int j=0;j<f;j++){
                sort(mp[na].begin(),mp[na].end(),cmp);
                cout << mp[na][0].id << " ";
                mp[na][0].tasknum++;
                for(int pp=1;pp<=n;pp++){
                    if(nodes[pp].id==mp[na][0].id){
                        nodes[pp].tasknum++;
                        break;
                    }
                }
            }
            cout << endl;
        }else{
            for(int j=0;j<f;j++){
                sort(nodes.begin()+1,nodes.end(),cmp);
                cout << nodes[1].id <<" ";
                nodes[1].tasknum++;
                for(int k=0;k<mp[nodes[1].belong].size();k++){
                    if(mp[nodes[1].belong][k].id==nodes[1].id){
                        mp[nodes[1].belong][k].tasknum++;
                        break;
                    }
                }
                sort(nodes.begin()+1,nodes.end(),cmp);
            }
            cout << endl;
        }


    }
    return 0;
}

你可能感兴趣的:(csp刷题,c++,算法)