zoj3888
Posted 宣毅鸣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zoj3888相关的知识,希望对你有一定的参考价值。
题解:
维护比这个大的第二大
代码:
#include<cstdio> #include<algorithm> #include<queue> #include<cstring> using namespace std; int i,j,n,m,q,c; struct node { int a,b; }p[50010]; bool cmp(node a,node b) { if(a.a!=b.a) return a.a>b.a; return a.b>b.b; } int sum[50010]; priority_queue<int, vector<int>, greater<int> > que; int main() { while (~scanf("%d%d%d",&n,&m,&q)) { while (!que.empty())que.pop(); for (i=0;i<m;i++)scanf("%d%d",&p[i].a,&p[i].b); sort(p,p+m,cmp); sum[1]=0; int a1,a2; for (i=n,j=0;i>=2;i--) { for (;j<m;j++) { if (i<=p[j].a) que.push(p[j].b); else break; } if ((int)que.size()<2) { sum[i]=0; continue; } a1=que.top(); que.pop(); a2=que.top(); que.pop(); que.push(a1); que.push(a2); if(i-a2<0) sum[i]=0; else sum[i]=i-a2; } while (q--) { scanf("%d",&c); printf("%d\n",sum[c]); } } return 0; }
以上是关于zoj3888的主要内容,如果未能解决你的问题,请参考以下文章
线段树 BZOJ3888 [Usaco2015 Jan]Stampede
luogu3888 GDOI2014拯救莫里斯 (状压dp)
zookeeper集群启动报错:Cannot open channel to * at election address /ip:3888