C++优先队列例子
Posted godoforange
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++优先队列例子相关的知识,希望对你有一定的参考价值。
#pragma GCC optimize(3) #include <bits/stdc++.h> #define N 105 using namespace std; struct Node long long x; int Max; bitset<N> avl,vis; friend bool operator < (const Node &l,const Node &r) return l.x>r.x; ; int a[N]; int n,k; char s[N]; priority_queue <Node> S; long long ans; bitset <N> P[N]; int main() scanf("%d%d",&n,&k); k--; if(k==0) puts("0"); return 0; for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) scanf("%s",s+1); for(int j=1;j<=n;j++) if(s[j]==‘1‘)P[i][j]=1; for(int i=1;i<=n;i++) Node tmp; tmp.x=a[i]; tmp.avl=P[i]; tmp.vis[i] = 1; tmp.Max = i; S.push(tmp); while(!S.empty()) Node u = S.top(); S.pop(); ans = u.x; k--; if(!k) printf("%lld\n",ans); return 0; for(int j=u.Max+1;j<=n;j++) if (u.avl[j]) Node v; v.x = u.x + a[j]; v.avl = u.avl & P[j]; v.vis[j] = 1; v.vis |= u.vis; v.Max = j; S.push(v); puts("-1"); return 0;
以上是关于C++优先队列例子的主要内容,如果未能解决你的问题,请参考以下文章