P2527 [SHOI2001]Panda的烦恼
考虑优先队列广搜,第 次出队的即为答案。注意需要去重。复杂度 ,开 O2 可过,注意不要使用 long long,会 MLE。
#include <iostream>
#include <queue>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 105;
#define ll int
priority_queue<ll, vector<ll>, greater<ll> > q;
int n, k;
int a[N];
ll bfs()
{
int cnt = 0;
ll last = 0;
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++) q.push(a[i]);
while (q.size())
{
ll p = q.top();
q.pop();
if (last == p) continue;
last = p;
if (++cnt == k) return p;
for (int i = 1; i <= n; i++)
{
if (1ll * p * a[i] > (long long)2e9) break;
q.push(p * a[i]);
}
}
}
int main()
{
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
cin >> n >> k;
//k++;
for (int i = 1; i <= n; i++) cin >> a[i];
cout << bfs() << "\n";
return 0;
}

浙公网安备 33010602011771号