接水问题(NOIP 2010 PJT2)
作者:互联网
题目:
使用优先队列。
开优先队列:priority_queue<int,vector<int>,greater<int>> que;
1.输入
输入 n(<=10000),m(<=100)(m<=n)
将输入的打水时间存入a数组中。
2.处理数据
2.1遍历a[i]数组,i<=m时,将a[i]推入que中。
i>m时,将a[i]加上que.front(),再que.pop(),最后将a[i]入队。
3.输出 队尾元素;
程序:
#include<bits/stdc++.h> using namespace std; int n,m,a[10090]={0}; priority_queue<int,vector<int>,greater<int>> que; int main() { #ifdef LOCAL freopen( "1.in", "r", stdin ); freopen( "1.out", "w", stdout ); #endif scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=1;i<=n;i++) { if(i<=m) { que.push(a[i]); } else { a[i]+=que.top(); que.pop(); que.push(a[i]); } } for(int i=1;i<m;i++) que.pop(); printf("%d\n",que.top()); return 0; }
标签:queue,greater,NOIP,int,priority,que,freopen,PJT2,2010 来源: https://www.cnblogs.com/wjk53233/p/16536542.html