HDU5437 Alisha’s Party(优先队列+模拟)
程序员文章站
2022-07-28 18:45:21
Source 2015 ACM/ICPC Asia Regional Changchun Online
题意:有k个人带着价值vi的礼物来,开m次门,每次在有t个人来的时候开门放...
Source 2015 ACM/ICPC Asia Regional Changchun Online
题意:有k个人带着价值vi的礼物来,开m次门,每次在有t个人来的时候开门放进来p个人,所有人都来了之后再开一次门把剩下的人都放进来,每次带礼物价值高的人先进,价值相同先来先进,q次询问,询问第n个进来的人的名字。分析:优先队列+模拟就可以了,只是注意m可以为0。
#include #include #include #include #include #include #include #include #include #include using namespace std; const double eps = 1e-6; const double pi = acos(-1.0); const int INF = 0x3f3f3f3f; const int MOD = 1000000007; #define ll long long #define CL(a,b) memset(a,b,sizeof(a)) #define lson (i<<1) #define rson ((i<<1)|1) #define MAXN 150010 struct node { int id,v; char name[220]; bool operator < (const node &tmp) const { if(v == tmp.v) return id < tmp.id; return v > tmp.v; } }p[MAXN]; struct opendoor { int a,b; bool operator < (const opendoor &tmp) const { return a < tmp.a; } }od[MAXN]; set s; int query[110]; int main() { int T,n,m,q; scanf("%d",&T); while(T--) { s.clear(); scanf("%d%d%d",&n,&m,&q); for(int i=1; i<=n; i++) { scanf("%s %d",p[i].name, &p[i].v); p[i].id = i; } for(int i=0; i ans; int cnt = 0; for(int i=1; i<=n&&ans.size()id); s.erase(s.begin()); } cnt++; } } while(!s.empty() && ans.size()id); s.erase(s.begin()); } for(int i=0; i
上一篇: 产品软文推广务必遵循的4大法则
下一篇: 微信公众平台支持原创对抄袭下狠手