hdu 5437 Alisha’s Party 优先队列
2015-09-13 15:34
375 查看
[code]#include<bits/stdc++.h> using namespace std; const int N=150000+5; struct node { int v,id; char s[200+5]; friend bool operator <(node n1,node n2) { if(n1.v==n2.v) return n1.id>n2.id; return n1.v<n2.v; } }; node a ; struct data { int num,cnt; } b ; bool cmp(data n1,data n2) { return n1.num<n2.num; } int c[100+5],d ; priority_queue<node>q; int main() { int _,i,j,k,m,p,cnt,st,t; scanf("%d",&_); while(_--) { scanf("%d%d%d",&k,&m,&p); for(i=0; i<k; i++) { scanf("%s%d",a[i].s,&a[i].v); a[i].id=i; } for(i=0; i<m; i++) scanf("%d%d",&b[i].num,&b[i].cnt); sort(b,b+m,cmp); for(i=0; i<p; i++) scanf("%d",&c[i]); while(!q.empty()) q.pop(); cnt=1; j=0; for(i=0; i<m; i++) { for(; j<b[i].num; j++) q.push(a[j]); for(t=0; t<b[i].cnt; t++) { if(q.empty()) break; d[cnt++]=q.top().id; q.pop(); } } for(;j<k; j++) q.push(a[j]); while(!q.empty()) { d[cnt++]=q.top().id; q.pop(); } st=0; for(i=0; i<p; i++) { if(st) printf(" "); else st++; printf("%s",a[d[c[i]]].s); } if(st) printf("\n"); } return 0; }
相关文章推荐
- hdu 5437 Alisha’s Party 优先队列
- 【软考】校检码之海明校验码的求法
- 扩展Bootstrap Tooltip插件使其可交互
- leetcode 链表
- 添加硬盘分区
- Leetcode Algorithm No.2 Add Two Numbers
- HightChart图例(Legend)
- hdu 5443 The Water Problem
- Muduo 网络库c++
- LayoutInflater 动态加载布局文件
- hdu 5443 The Water Problem
- maven 学习
- Linux字符设备驱动之中断按键
- hdu 5438 Ponds DFS
- 半监督学习和直推式学习
- 半监督学习和直推式学习
- hdu 5438 Ponds DFS
- Hello World
- Error:No suitable device found: no device found for connection "System eth0"
- 数据库