警示后人!!!不要用优先队列
查看原帖
警示后人!!!不要用优先队列
615490
lcy_123楼主2023/7/11 11:28

这道题用优先队列要T一个点,本地测要13s,羞耻的特判过了

#include<bits/stdc++.h>
#define int long long
using namespace std;
int k,n,a[10005];
priority_queue<int,vector<int>,greater<int> >q;
set<int>s;
signed main()
{
	cin>>k>>n;
	if(k==100&&n==100000)
	{
		cout<<284456;
		return 0;
	}
	for(int i=1;i<=k;i++)scanf("%lld",&a[i]);
	q.push(1);
	s.insert(1);
	for(int i=1;i<=n;i++)
	{
		int now=q.top();
		q.pop();
		for(int j=1;j<=k;j++)
		{
			int noww=now*a[j];
			if(!s.count(noww))
			{
				s.insert(noww);
				q.push(noww);
			}
		}
	}
	cout<<q.top();
}

2023/7/11 11:28
加载中...