AcWing 5017. 垦田计划(复杂度O(n))(使用map,二十多行代码)
原题链接
简单
作者:
共勉_4
,
2024-12-02 21:05:52
,
所有人可见
,
阅读 1
使用数据结构 map 即可
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int main(){
// 输入
int n, m, k;
cin >> n >> m >> k;
map<int, int, greater<int>> mp; // 降序排序
int t, c;
for(int i=0; i<n; i++){
cin >> t >> c;
mp[t] += c; // 第t天所需的资源数
}
while(true){
if(m - mp.begin()->second >=0){
m = m - mp.begin()->second; // 更新剩余资源
mp[mp.begin()->first-1] += mp.begin()->second; // 天数-1,更新前一天所需资源
mp.erase(mp.begin()); // 移除最大天数
}
else break;
}
cout << max(mp.begin()->first, k);
return 0;
}