栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1023 University Entrace E...

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1023 University Entrace E...

#include <stdio.h>#include <string.h>#include <queue>#include <vector>#include <cmath>#include <iostream>using namespace std;int n,m;int r[200],sc[200],k[200],f[200][200];int dr[200],dc[200];void input(){scanf("%d %d",&n,&m);int i,j;for (i=0;i<n;++i){scanf("%d %d %d",r+i,sc+i,k+i);for (j=0;j<k[i];++j){scanf("%d",f[i]+j);--f[i][j];}}for (i=0;i<m;++i)scanf("%d %d",dr+i,dc+i);}struct elem{int uv,id;};bool operator<(const elem &a,const elem &b){if(r[a.id]==dr[a.uv]){if(r[b.id]==dr[b.uv]) return sc[a.id]>sc[b.id];else return 10*sc[a.id]>7*sc[b.id];}else{if (r[b.id]==dr[b.uv]) return 7*sc[a.id]>=10*sc[b.id];else return sc[a.id]>sc[b.id];}}int usd[200],tsd[200];void match(){memset(usd,-1,sizeof(usd));memset(tsd,0,sizeof(tsd));vector<priority_queue<elem> > sts;priority_queue<elem> tmp;int i,cs;for(i=0;i<m;++i) sts.push_back(tmp);elem atmp,btmp;queue<int> qu;for(i=0;i<n;++i) if (k[i]>0) qu.push(i);while (!qu.empty()){cs=qu.front();qu.pop();atmp.id=cs;atmp.uv=f[cs][tsd[cs]];++tsd[cs];if (sts[atmp.uv].size()<dc[atmp.uv]){sts[atmp.uv].push(atmp);usd[atmp.id]=atmp.uv;}else{if (atmp.uv>=m||dc[atmp.uv]==0){if (tsd[atmp.id]<k[atmp.id])qu.push(atmp.id);}else{btmp=sts[atmp.uv].top();if (atmp<btmp){sts[atmp.uv].pop();sts[atmp.uv].push(atmp);usd[atmp.id]=atmp.uv;usd[btmp.id]=-1;if (tsd[btmp.id]<k[btmp.id]) qu.push(btmp.id);}else{if (tsd[atmp.id]<k[atmp.id])qu.push(atmp.id);}}}}}void output(){int i;for (i=0;i<n;++i)if (usd[i]<0) printf("not acceptedn");else printf("%dn",usd[i]+1);}int main(){int cs,i;scanf("%d",&cs);for (i=0;i<cs;++i){input();match();if (i) printf("n");output();}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号