51nod 1475 建设国家

xiaoxiao2021-02-28  123

参考:http://blog.csdn.net/u010885899/article/details/48785763 刚开始看,没思路,看题解。题解的代码太6了 还是太弱了

#include <bits/stdc++.h> using namespace std; const int MAXN = 1010; int h,p; int n,H; vector<int> vecs[MAXN]; priority_queue<int,vector<int>,greater<int> > que; int main() { ios::sync_with_stdio(false); cin >> n >> H; int t; //h是出城要用的时间,min(H-h,n)则是他最远能在哪个城市 //这样预处理下,基本就和51nod 1163 最高的奖励 一样了 for(int i = 0; i < n; ++i) { cin >> h >> p; t = min(H-h,n); vecs[t].push_back(p); } int res = 0; int s = 0; for(int i = 1; i <= n; ++i) { while(que.size() >= i) { s -= que.top(); que.pop(); } for(int x : vecs[i]) { que.push(x); s += x; } while(que.size() > i+1) { s -= que.top(); que.pop(); } res = max(res,s); } cout << res << endl; return 0; }
转载请注明原文地址: https://www.6miu.com/read-18913.html

最新回复(0)