题目:An Easy Problem
- 题意
- 思路
- 代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
priority_queue<pair<ll,ll> > q;
ll n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
q.push({i*m,i});
}
pair<ll,ll> t;
while(k--){
t=q.top();
q.pop();
q.push({t.first-t.second,t.second});
}
printf("%lld\n",t.first);
}
- 感悟
二维的超过了, O ( n 2 ) O(n^2) O(n2)的复杂度不可以,可以考虑在每一维是否有单调关系,如果有,则可以利用堆的 O ( l o g ( n ) ) O(log(n)) O(log(n))的性质进行插入替换。